如何用更快的速度替换GetPixel()
?
目前,我正在使用:
temp = GetPixel(hMonitor, 1, 1);
if (pixelArray[0] != temp)
{
pixelArray[0] = temp;
counter++;
}
上面的代码只是一个简化的示例。
它包含在显示器上所有像素的for循环中。它将一个像素(温度)与前一个数组的像素(pixelArray)进行比较。如果已更改,请更换它。但是,我发现对显示器上的每个像素使用GetPixel()会花费很长时间。
我一直在阅读其他类似性质的问题,例如:
Fastest method of screen capturing
Get Pixel color fastest way?
...但是我不确定哪种方法更好,例如GDI或DirectX,也不确定如何实现上述方法。
更新:我需要Windows GDI(使用GetObject)到像素数组,谢谢。这比GetPixel()快得多。
最佳答案
我建议您检索指向位图像素数据的指针(假设您具有HBITMAP句柄)。
这是通过GetObject()完成的,应该返回一个BITMAP structure。这是您感兴趣的领域:
bmBits:
指向位图位值位置的指针。的
bmBits成员必须是指向字符数组(1字节)的指针
价值观。
然后,您可以在缓冲区上按像素运行检查逻辑。这将比使用GetPixel更快。
关于c++ - 比GetPixel()快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26727293/