我读过一些文档和示例,但我不明白。从HDC
转换为awt.Graphics
是不可能的吗?
我知道已经有解决此问题的答案,但是它们都很具体。我想最终绘制到屏幕上并处理保存的图像。我认为最好的方法是在BufferedImage
和HDC
之间转换,因为使用awt
绘制非常简单。
我刚刚了解了JNA
,所以这可能是一个非常愚蠢的问题。我从未使用过C或C ++,这可能对您没有帮助。无论如何,我被困在这里:
public static void main(String[] args)
{
GDI32 GDI = GDI32.INSTANCE;
User32 user32 = (User32) Native.loadLibrary("user32", User32.class);
HWND win = user32.GetForegroundWindow();
HDC winDC = user32.GetDC(win);
HBITMAP bi = GDI.CreateCompatibleBitmap(winDC, 1024, 1024);
}
最佳答案
兼容位图的最佳选择是整数值数组,尽管您可能必须直接从一种格式读取像素值并写入目标。 JNA将像素从Java Graphics生成的图像传输到WindowUtils.java中的Windows HDC。
至于将Windows绘制的内容转换为BufferedImage
,则需要将Windows图像提取为像素,然后将其写入BufferedImage
。