我有一个绘图程序,允许用户绘制线条,框,文本,甚至JPEG.
我希望能够保存用户绘制的图像,但是我对如何将用户的创建转换为我可以轻松使用的格式(Image或BufferedImage)感到有点困惑.
用户在JPanel上绘制他们的内容(让我们称之为JPanel inputPanel).如果用户单击一个按钮(让我们调用此按钮saveButton).弹出一个JFileChooser,询问将其保存到哪里,然后BAM,保存创建(我知道如何以编程方式保存图像).
有没有一种简单的方法可以以这种方式将JPanel转换或转换为Image或BufferedImage?
谷歌搜索/搜索StackOverFlow仅提供使用setIcon()将图像绘制到JPanel的解决方案,这没有帮助.
小例子如何做到这一点:
public class Example
{
public static void main ( String[] args )
{
JPanel panel = new JPanel ( new FlowLayout () )
{
protected void paintComponent ( Graphics g )
{
super.paintComponent ( g );
g.setColor ( Color.BLACK );
g.drawLine ( 0, 0, getWidth (), getHeight () );
}
};
panel.add ( new JLabel ( "label" ) );
panel.add ( new JButton ( "button" ) );
panel.add ( new JCheckBox ( "check" ) );
JFrame frame = new JFrame ( );
frame.add ( panel );
frame.pack ();
frame.setVisible ( true );
BufferedImage bi = new BufferedImage ( panel.getWidth (), panel.getHeight (), BufferedImage.TYPE_INT_ARGB );
Graphics2D g2d = bi.createGraphics ();
panel.paintAll ( g2d );
g2d.dispose ();
try
{
ImageIO.write ( bi, "png", new File ( "C:\\image.png" ) );
}
catch ( IOException e )
{
e.printStackTrace ();
}
System.exit ( 0 );
}
}
Run Code Online (Sandbox Code Playgroud)
在面板上放置或绘制的所有内容都将保存到BufferedImage中,然后保存到指定位置的image.png文件中.
请注意,面板必须显示(必须在某些帧上实际可见)才能在图像上绘制,否则您将获得空图像.
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |