如何将 java 组件渲染为高分辨率图像?

时间:2021-05-19 10:02:52

标签: java components rendering

我正在尝试在 Java 中提取应用程序窗口组件的图像。

我创建了一个覆盖 java.awt.GraphicsConfiguration 的类,它看起来与 sun.awt.Win32GraphicsConfig 非常相似。问题是,当我使用组件(例如应用程序窗口)和比实际尺寸大 2 倍的尺寸调用 createAcceleratedImage 函数时,java 在左上角的图像中将其渲染得很小,而图像的其余部分是空白空间。

我的 createAcceleratedImage 函数与 sun.awt.Win32GraphicsConfig 中的相同:

public Image createAcceleratedImage(Component target, int w, int h) {
    ColorModel localColorModel = getColorModel(Transparency.OPAQUE);
    WritableRaster localWritableRaster = localColorModel.createCompatibleWritableRaster(w, h);
    return new OffScreenImage(target, localColorModel, localWritableRaster, localColorModel.isAlphaPremultiplied());
}

如果我忘记提及更多信息,我深表歉意,如果您需要更多信息,请在评论中提问。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我在 CustomComponentPeer 中使用了 VolatileImage 而不是 OffScreenImage。

public VolatileImage createVolatileImage(int width, int height) {
    GraphicsConfiguration graphicsConfig = getGraphicsConfiguration();
    return graphicsConfig.createCompatibleVolatileImage(width, height);
}

我发现Graphics2D中的drawImage函数只支持MultiResolutionImage和VolatileImage的高分辨率渲染。不支持使用 OffScreenImage 以高 DPI 进行渲染。

相关问题