如何获得JPanel的子图像?

时间:2012-07-15 05:07:05

标签: java graphics jpanel bufferedimage

BufferedImage有一个返回Image的getSubimage(x,y,width,height)方法。我在JPanel上绘制图形,我如何使用JPanel做类似于BufferedImage方法的东西?

例如(如果只是正确的话):

BufferedImage bi = jPanel.getSubimage(x, y, width, height);

谢谢

1 个答案:

答案 0 :(得分:0)

您可以将任何挥杆组件渲染为缓冲图像。

由于你只需要一个子图像,我想这将是一个两步过程,1)将你的JPanel呈现给BufferedImage,2)获取它的子图像。

BufferedImage bi = new BufferedImage(jPanel.getWidth(), jPanel.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = (Graphics2D)bi.getGraphics();
panel.printAll(g); //I assume you wanted child elements too... otherwise just use paint(g)
BufferedImage result= bi.getSubimage(...);

注意:这仅在初始化,定位等所有组件并显示后才有效。