Me pregunto si hay una forma supereficiente de confirmar que un objeto Imagen hace referencia a una imagen totalmente negra, por lo que cada píxel dentro del mapa de bits es ARGB (255, 0, 0, 0).¿Cuál es una manera eficiente de saber si un mapa de bits es completamente negro?
¿Qué recomendarías? La mayoría de estos mapas de bits tendrán 1024 x 6000 píxeles (aunque no es seguro suponer que siempre serán de ese tamaño).
Necesito esto porque estamos teniendo problemas con la API PrintWindow. Encontramos que casi el 20% del tiempo, al menos una parte de la imagen será un cuadrado negro (una captura posterior tendrá éxito). Mi idea para solucionar esto fue llamar a PrintWindow o WM_PRINT con cada ventana secundaria, luego volver a unir toda la imagen de la ventana. Si puedo encontrar una manera eficiente de detectar que PrintWindow devolvió una imagen negra para una ventana secundaria particular, entonces puedo llamar rápidamente a PrintWindow nuevamente en esa captura. Apesta, pero PrintWindow es el único método para capturar una ventana que funciona en todas las ventanas (que yo quiero, de todos modos) y admite la captura de ventanas que están ocultas y/o fuera de la pantalla.
Cuando PrintWindow falla, no establece un código de error ni devuelve nada que indique que falló. Cuando tiene este problema de cuadrado negro, siempre es una ventana entera o una ventana secundaria que se vuelve negra. Así que al capturar cada ventana secundaria por separado, puedo estar seguro de que cada una de mis capturas habrá funcionado, siempre que contenga al menos un píxel no negro.
PrintWindow es mejor en Vista y por encima de, al parecer, pero en este caso estamos limitados a Server 2003.
¡Míralo! :-) – brendan
¿Quiere decir otra cosa que no sea verificar cada píxel? – jlew
Elija un número de píxeles aleatorio pero bien distribuido y si son todos negros suponga que todo es negro. – Will