Estoy trabajando en un programa en C# que toma capturas de pantalla de una poción de la pantalla del usuario. Para los más exigentes funciona como debería, pero recientemente me encontré con un problema. Parece haber (al menos) un color de píxel que siempre aparece como transparente en la imagen de salida. Cualquier instancia del color # 0D0B0C (RGB 13, 11, 12) aparece transparente en el png guardado. Esto es con PixelFormat establecido en Format32bppArgb. Si lo configuro en Format32bppRgb o Format24bppRgb, ese mismo color de píxel aparece como negro en el png guardado.C# Bitmap objeto, el color aparece como transparente
No tengo idea de qué podría estar causando esto, pero lo único que he podido hacer para "arreglarlo" es borrar el objeto gráfico a ese color antes de hacer CopyFromScreen(). Aunque odio eso, por algunas razones. Primero, no sé si ese es el único color que tiene el problema (con 16,777,216 colores hay bastantes posibilidades), y segundo, odio las soluciones de hack, esto parece una solución de hackeo.
¿Alguien puede arrojar alguna luz sobre lo que podría estar causando este problema? Me he metido con PixelFormat en la creación del mapa de bits y con CopyPixelOperation en el método CopyFromScreen, nada parece funcionar. El hecho de que borrar el objeto gráfico de ese color "corrige" parece decirme que la transparencia proviene de los datos de la pantalla en sí, pero eso no tiene sentido. He estado mirando esto por mucho tiempo, creo que necesito una nueva perspectiva al respecto. Si alguien tiene alguna idea de por qué esto podría estar pasando, me encantaría escucharlo. Gracias.
Todo lo que tienes que hacer para diagnosticar es mover el formulario en la pantalla y ver si se va. Dudo mucho que ese sea el problema ... –
Tiene múltiples píxeles y ocurre en múltiples pantallas/computadoras diferentes, y siempre es solo ese color. Pensé que el problema estaba solucionado, pero uno de los usuarios del programa me dijo que todavía estaba sucediendo. – HaLo2FrEeEk