从GDI32.HDC转换为awt.Graphics

时间:2013-06-17 19:11:13

标签: java gdi jna

我已经阅读了一些文档和示例,但我只是不明白。是否无法从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); 
}

1 个答案:

答案 0 :(得分:0)

兼容位图的最佳选择是整数值数组,但您可能必须直接读取一种格式的像素值并写入目标。 JNA在WindowUtils.java中将像素从Java Graphics生成的图像传输到Windows HDC。

至于将窗口转换为BufferedImage的内容,您需要将Windows图像提取为像素,然后将其写入BufferedImage