2009-08-19 37 views
0

我正在编写一些自动化代码,我遇到了一个问题,找到一种有效的方式来检查显示器上当前存在的像素。搜索图形设备上下文对于特定颜色的像素

我已经熟悉了gdi32库中存在的GetPixel函数,但它太慢了(实际上,扫描约1900像素的一行约需10秒)。

我已经开始制作一个位图图形设备上下文中的位图,并测试它是否更高效(我无法想象会是这样,考虑到它会花费大量的r/w与屏幕图像合理保持最新状态),但在此之前,我想知道是否有人有更好的想法。

我真的很喜欢的是一种有效的方式来收集一些或所有的现在(或相当接近现在)的图形上下文,希望使用.NET的像素颜色的二维数组。

回答

0

我最终做的是捕获整个图形上下文的屏幕截图,并在静态上下文中搜索我正在寻找的结果位图。然后,因为我所关心的图形输出区域大约只有70x70像素,所以我每隔10毫秒就捕获一小部分,并检查它是否有趣的变化。

这不需要任何不安全的代码或图形上下文的锁定,并且相当高效。

1

您必须锁定图像并直接使用内存。有关于如何做到这一点的好文章here

+0

谢谢。当我下班回家时,我会给你一个镜头。 – Daniel 2009-08-19 18:02:47