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