比GetPixel()更快?

时间:2014-11-04 03:34:02

标签: c++ windows directx gdi

如何更快地替换GetPixel()

目前我正在使用:

temp = GetPixel(hMonitor, 1, 1);
if (pixelArray[0] != temp)
{
    pixelArray[0] = temp;
    counter++;
}

上面的代码只是一个简化的例子。

这包含在显示屏上所有像素的for循环中。它将一个像素(temp)与前一个数组的像素(pixelArray)进行比较。如果已更改,则更换它。然而,我发现对显示器上的每个像素使用GetPixel()需要很长时间。

我一直在阅读类似性质的其他问题,例如:

  

Fastest method of screen capturing

     

Get Pixel color fastest way?

...但我不确定哪种方法更好,例如GDI或DirectX,以及我如何实现所述方法。

更新:我需要Windows GDI(使用GetObject)到像素数组,谢谢。这比GetPixel()快得多。

1 个答案:

答案 0 :(得分:1)

我建议你检索一个指向位图像素数据的指针(假设你有一个HBITMAP句柄)。

这是通过GetObject()完成的,它应该返回BITMAP structure。这是您感兴趣的领域:

  

<强> bmBits :   指向位图的位值位置的指针。该   bmBits成员必须是指向字符数组的指针(1字节)   值。

然后,您可以在缓冲区上按像素运行检查逻辑。使用GetPixel会更快。

相关问题