如何用更快的速度替换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/

10-11 00:55