我已经阅读了一些文档和示例,但我只是不明白。是否无法从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);
}
答案 0 :(得分:0)
兼容位图的最佳选择是整数值数组,但您可能必须直接读取一种格式的像素值并写入目标。 JNA在WindowUtils.java中将像素从Java Graphics生成的图像传输到Windows HDC。
至于将窗口转换为BufferedImage
的内容,您需要将Windows图像提取为像素,然后将其写入BufferedImage
。