gpt4 book ai didi

java - JFrame 到图像而不显示 JFrame

转载 作者:搜寻专家 更新时间:2023-11-01 01:17:48 29 4
gpt4 key购买 nike

我试图在不显示 JFrame 本身的情况下将 JFrame 渲染为图像(类似于 this 问题所问的内容)。我试过使用这段代码:

private static BufferedImage getScreenShot(Component component)
{
BufferedImage image = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB);
// call the Component's paint method, using
// the Graphics object of the image.
component.paint(image.getGraphics());
return image;
}

但是,这仅在设置了 JFramesetVisible(true) 时有效。这将导致图像显示在屏幕上,这不是我想要的。我也尝试过创建这样的东西:

public class MyFrame extends JFrame
{
private BufferedImage bi;

public MyFrame(String name, BufferedImage bi)
{
this.bi = bi;
super(name);
}

@Override
public void paint(Graphics g)
{
g.drawImage(this.bufferedImage, 0, 0, null);
}
}

然而,这会显示黑色图像(如上面的代码)。我很确定我所追求的是可能的,问题是我真的找不到方法。我对自定义 Swing 组件的经验非常有限,因此我们将不胜感激。

谢谢。

最佳答案

这是一个应该可以解决问题的片段:

Component c; // the component you would like to print to a BufferedImage
JFrame frame = new JFrame();
frame.setBackground(Color.WHITE);
frame.setUndecorated(true);
frame.getContentPane().add(c);
frame.pack();
BufferedImage bi = new BufferedImage(c.getWidth(), c.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = bi.createGraphics();
c.print(graphics);
graphics.dispose();
frame.dispose();

关于java - JFrame 到图像而不显示 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477522/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com