Мне интересно, есть ли суперэффективный способ подтверждения того, что объект Image ссылается на полностью черное изображение, поэтому каждый пиксель внутри растрового изображения является ARGB (255, 0, 0, 0).
Что бы вы порекомендовали? Большинство из этих растровых изображений будут 1024 x 6000 пикселей (хотя небезопасно предположить, что они всегда будут такого размера).
Мне нужно это, потому что у нас проблемы с API PrintWindow. Мы находим, что почти 20% времени, по крайней мере, часть изображения будет черным квадратом (последующий захват будет успешным). Моя идея обойти это состояла в том, чтобы вызвать PrintWindow или WM_PRINT с каждым дочерним окном, а затем объединить все изображение окна вместе. Если я могу найти эффективный способ обнаружения того, что PrintWindow возвратил черное изображение для определенного дочернего окна, я могу быстро вызвать PrintWindow снова в этом захвате. Это отстой, но PrintWindow - единственный способ захвата окна, которое работает во всех окнах (что я хочу, во всяком случае) и поддерживает захват окон, которые скрыты и/или вне экрана.
Когда PrintWindow терпит неудачу, он не устанавливает код ошибки или не возвращает ничего, что указывает на его сбой. Когда у него есть эта проблема с черным квадратом, всегда есть полное окно или дочернее окно, которое возвращает черный цвет. Поэтому, фиксируя каждое дочернее окно отдельно, я могу быть уверенным, что каждый из моих захватов будет работать, если он содержит по крайней мере один нечерный пиксель.
PrintWindow лучше в Vista и выше, по-видимому, но в этом случае мы ограничены сервером 2003.