【问题标题】:How to render java component to high resolution image?如何将java组件渲染为高分辨率图像?
【发布时间】:2021-08-08 13:39:27
【问题描述】:

我正在尝试在 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());
}

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

感谢您的帮助。

【问题讨论】:

    标签: java components rendering


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 2012-04-23
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多