java使用JNA获得单个像素的颜色
我试图获得屏幕上像素的颜色,但我找不到一种可持续的滴答率的方法
所以我尝试的第一个选项是Java中的Robot类——它使用起来很简单,但速度还不够快
然后我找到了一种使用JNA从this post捕获屏幕截图的方法。在对代码进行了一点测试和处理后,我发现我能够几乎得到我想要的东西,主要是通过修改这一行:
GDI32Extra.INSTANCE.BitBlt(hdcMemDC, 0, 0, width, height, hdcWindow, 0, 0, WinGDIExtra.SRCCOPY);
唯一的问题是,在挑选出你想要的单个像素之前,它仍然会捕获整个窗口,而这似乎并不正确。这会大大降低滴答声的频率
有没有什么方法可以只捕获一个像素,还是必须先捕获整个窗口
我对JNA的库非常缺乏经验,所以我可能只是错过了一些简单的东西。如果有人能给我指出正确的方向,我将不胜感激
谢谢
# 1 楼答案
尝试将GetPixel函数添加到您自己的JNA类中
然后用
MyGDI32.INSTANCE.GetPixel()
来调用它我不能保证它会比
Robot
类快,但它确实回答了你的问题“如何使用JNA获得单个像素的颜色”您必须解析} :
DWORD
(32位int)返回值,其格式为^{0x00bbggrr