我正在编写一些自动化代码,我遇到了一个问题,找到一种有效的方法来检查显示器上目前存在的像素。
我已经熟悉了gdi32库中存在的 GetPixel 函数,但它太慢了(事实上,扫描大约1900像素的行需要大约10秒钟)。
我已经提出了从图形设备上下文中制作位图的想法,并测试它是否更有效(我无法想象它会是这样,考虑到需要大量的r / w保持合理的屏幕图像),但在我这样做之前,我想知道是否有人有更好的想法。
我真正喜欢的是在一些或所有当前(或合理接近现在)图形上下文中收集二维像素颜色数组的有效方法,希望使用.NET。
答案 0 :(得分:1)
您必须锁定图像并直接使用内存。有一篇关于如何执行此操作的文章here。
答案 1 :(得分:0)
我最终做的是捕获整个图形上下文的屏幕截图,并在静态上下文中搜索结果位图以查找我正在寻找的内容。然后,因为我所关注的图形输出区域只有大约70x70像素,所以我每10毫秒捕获一小部分并检查它是否有趣。
这不需要任何不安全的代码或锁定图形上下文,并且效率相当高。