【发布时间】:2011-12-01 18:55:24
【问题描述】:
我在从屏幕外的 JPanel 创建 BufferedImage 时遇到问题。具体来说,我正在尝试绘制 JPanel 的图像(其中包含一些 Java3D 元素)作为我正在处理的应用程序的背景图像。
我发现几个线程描述了如何通过将 JPanel 绘制到 BufferedImage 的图形上下文来获取 JPanel 的图像,但是当我绘制 BufferedImage 时,我得到的只是一个大的白色矩形。
这是我的代码:
SimpleWorld j3DPanel; // a custom JPanel that contains some simple Java3D elements
// CONSTRUCTOR
public GameBackgroundObject()
{
super();
// Here I set up a JPanel that contains some Java3D elements.
j3DPanel = new SimpleWorld();
j3DPanel.setSize(mainLevel.SCREENW, mainLevel.SCREENH);
j3DPanel.setBounds(0,0,mainLevel.SCREENW, mainLevel.SCREENH);
j3DPanel.doLayout();
j3DPanel.validate();
}
protected void draw(Graphics2D parentComponentGraphics, ...)
{
super.draw(parentComponentGraphics, ...);
int w = j3DPanel.getWidth();
int h = j3DPanel.getHeight();
BufferedImage j3DImg = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
Graphics2D g = j3DImg.createGraphics();
j3DPanel.paint(g);
parentComponentGraphics.drawImage(j3DImg, null, null);
}
另外,我尝试将我的 JPanel 添加到 JFrame 的内容中。它在那里工作并正确显示渲染的 Java3D 元素。但是,每当我尝试获取 JPanel 的 BufferedImage 并绘制该图像时,我都会得到这个大的白色矩形。
【问题讨论】:
标签: image swing jpanel bufferedimage java-3d