1

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

1 回答 1

0

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

至于将windows绘制的东西转换成a BufferedImage,您需要将windows图像提取为像素,然后将它们写入BufferedImage.

于 2013-06-18T13:56:46.687 回答