第一次,我将BufferedImage
从列表中插入到我的扩展类JPanel
中:
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
if (controlWhichImage == 1){
for (BufferedImage eachImage : docList){
g.drawImage(eachImage, 0,inty,imageWidth,imageHeight,null);
intx += eachImage.getWidth();
inty += eachImage.getHeight() * zoomAdd;
}
if (intx >= this.getWidth() || inty >= this.getHeight()){
inty = 0;
}
下次我想将JPanel
的内容复制到BufferedImage
:
public void recordImage(){
controlWhichImage = 2;
this.createdImage = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
Image halfWay = this.createImage(this.getWidth(), this.getHeight());
//now cast it from Image to bufferedImage
this.createdImage = (BufferedImage) halfWay;
}
然后,修改BufferedImage
并将其绘制回JPanel
:
if (controlWhichImage == 2){
g.drawImage(this.createdImage,0,inty,this.getWidth(),this.getHeight(),null);
}
第二次我得到一个空白面板。
我希望这很清楚,任何帮助都会感激不尽。
很抱歉我的解释不好。我会尽力使自己更清楚。
在每次迭代中,用户都可以在Jpanel上绘制图像。
我想要做的是将用户更改的jpanel复制到缓冲的图像中,然后将在Jpanel中再次由用户进行编辑。
这一直持续到用户选择打印。
除了我在这里放置的代码之外,还有用户绘制的控件,目前我正在努力将原始Jpanel中的初始更新图像放入bufferedImage然后再返回到JPanel。 希望这会让它更清晰
答案 0 :(得分:1)
要绘制到BufferedImage,您可以执行类似于paintComponent方法中的操作,但使用BufferedImage。也许是一种方法:
echo "<br />\n";
然后,您可以将返回的图像存储到变量中,然后根据需要将其绘制到JPanel中,或者将其写入磁盘。
如果这不能回答您的问题,那么您再次想要告诉我们您的MCVE。