我读过一些文档和示例,但我不明白。从HDC转换为awt.Graphics是不可能的吗?

我知道已经有解决此问题的答案,但是它们都很具体。我想最终绘制到屏幕上并处理保存的图像。我认为最好的方法是在BufferedImageHDC之间转换,因为使用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

09-30 14:01