搜索特定颜色像素的图形设备上下文

时间:2009-08-19 15:46:24

标签: .net hdc

我正在编写一些自动化代码,我遇到了一个问题,找到一种有效的方法来检查显示器上目前存在的像素。

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

我已经提出了从图形设备上下文中制作位图的想法,并测试它是否更有效(我无法想象它会是这样,考虑到需要大量的r / w保持合理的屏幕图像),但在我这样做之前,我想知道是否有人有更好的想法。

我真正喜欢的是在一些或所有当前(或合理接近现在)图形上下文中收集二维像素颜色数组的有效方法,希望使用.NET。

2 个答案:

答案 0 :(得分:1)

您必须锁定图像并直接使用内存。有一篇关于如何执行此操作的文章here

答案 1 :(得分:0)

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

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