我想知道是否有一种超级有效的方法来确认一个Image对象引用了一个完全黑色的图像,因此位图中的每个像素都是ARGB(255, 0, 0, 0)。
你会推荐什么?其中大部分位图将是1024 x 6000像素(尽管不能安全地假定它们总是那个大小)。
我需要这个是因为我们在使用PrintWindow API时遇到问题。我们发现近20%的时间,至少部分图像将是黑色的正方形(随后的捕获将成功)。我解决这个问题的想法是对每个子窗口调用PrintWindow或WM_PRINT,然后将整个窗口的图像拼接起来。如果我能找到一种有效的方法来检测PrintWindow是否针对特定子窗口返回了黑色图像,那么我就可以快速地在该捕获上再次调用PrintWindow。这很糟糕,但PrintWindow是捕获所有窗口(至少我想要的)并支持捕获隐藏和/或离屏窗口的唯一方法。
当PrintWindow失败时,它不设置错误代码或返回任何指示失败的内容。当它出现这个黑色正方形的问题时,总是会返回一个完整的窗口或子窗口是黑色的。所以通过单独捕获每个子窗口,我可以确定我的每个捕获都已经成功工作,只要它包含至少一个非黑色像素即可。
据说PrintWindow在Vista及以上版本中更好,但在这种情况下,我们受限于Server 2003。