10得票1回答
为什么在Win64上调用GetDIBits失败?

我使用GetDIBits进行调用,在32位操作系统上完美运行,但在64位操作系统上失败。尽管句柄的值不同,bitmapinfo结构的内容相同。以下是我能够想到的最小(至少稍微有结构的)代码示例,以重现错误。我测试了Delphi 10 Seattle Update 1,但错误似乎即使在其他版本的...

10得票5回答
使用GetDIBits函数并通过X、Y循环像素。

我正在捕获屏幕的一部分,并扫描像素以寻找特定的颜色范围。 我查看了MSDN的捕获图像示例并知道如何使用函数。 我可以将位数获取到数组中,但我不确定如何以可以像处理图像一样循环遍历它的方式来做。一个伪例子(我确定是错误的): for ( x = 1; x <= Image.Width...

10得票1回答
C++/Win32: 如何从HBITMAP中获取阿尔法通道?

我有一个包含 alpha 通道数据的 HBITMAP。使用 ::AlphaBlend GDI 函数可以成功地将其渲染。 但是,当我调用 ::GetPixel GDI 函数时,我从未收到带有 alpha 分量的值。文档确实说它返回像素的 RGB 值。 是否有办法检索 HBITMAP 中像素的...

7得票2回答
使用 BitBlt 截取程序窗口始终返回相同的图像

我写了以下代码(C++ Win32)来捕获游戏窗口屏幕并从图像获取像素颜色数组。函数autoB()完成了这项工作。 然后,我将结果数组绘制到我的窗口中,以便进行视觉检查。 问题在于,此程序仅在我启动计算机后第一次运行时有效,之后它会“缓存”从游戏中获取的第一张屏幕截图,并且我总是得到相同的...