如何更快地替换GetPixel()
?
目前我正在使用:
temp = GetPixel(hMonitor, 1, 1);
if (pixelArray[0] != temp)
{
pixelArray[0] = temp;
counter++;
}
上面的代码只是一个简化的例子。
这包含在显示屏上所有像素的for循环中。它将一个像素(temp)与前一个数组的像素(pixelArray)进行比较。如果已更改,则更换它。然而,我发现对显示器上的每个像素使用GetPixel()需要很长时间。
我一直在阅读类似性质的其他问题,例如:
...但我不确定哪种方法更好,例如GDI或DirectX,以及我如何实现所述方法。
更新:我需要Windows GDI(使用GetObject)到像素数组,谢谢。这比GetPixel()快得多。
答案 0 :(得分:1)
我建议你检索一个指向位图像素数据的指针(假设你有一个HBITMAP句柄)。
这是通过GetObject()完成的,它应该返回BITMAP structure。这是您感兴趣的领域:
<强> bmBits 强>: 指向位图的位值位置的指针。该 bmBits成员必须是指向字符数组的指针(1字节) 值。
然后,您可以在缓冲区上按像素运行检查逻辑。使用GetPixel会更快。