作者ozone (加油)
看板java
標題[問題] 用java畫圖存成jpg檔的問題
時間Thu Apr 30 01:45:33 2009
我想要用java做像excel那種的圖表
於是想說用視窗物件中的JPanel來做
在網路上找到了如何將JPanel中的圖形存起來的方法
於是改裝了一下 變成下面的程式
但執行起來發生了一些問題 我讓JPanel會畫出一個隨機的折線圖
然後執行10次 每次的圖形都會存檔
但去查看儲存的檔案發現 天啊~ 為什麼之前的圖形都還留著 新的圖形不斷蓋上去
我的for迴圈裡明明繼承JPanel的Draw物件都是新做的啊 為什麼會有之前圖形的殘留?
不知道出了什麼問題 有人可以教教我嗎...謝謝...
ps.
懷疑是ImageIO那裡的問題 因為其他物件都是新的
那部份程式碼都是抓來的 只會依樣畫壺籚..
還是說我要把上一個JPanel關掉才再開新的才行呢...Q_Q
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Draw extends JPanel{
public Draw(){
setSize(200,100);
}
public void paintComponent(Graphics g){
int x1=0, y1=0, x2=0, y2=0;
for(int i=0;i<20;i++){
x2+=10;
y2=(int)(Math.random()*80);
g.drawLine(x1,y1+10,x2,y2+10);
x1=x2; y1=y2;
}
}
public static void main(String[] args){
int num=0;
for(int i=0;i<10;i++){
Draw panel=new Draw();
int width=panel.getWidth();
int height=panel.getHeight();
BufferedImage image =
new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
panel.paint(g2);
g2.dispose();
try {
new File("testImg").mkdir();
File file=new File("testImg",(++num)+".png");
ImageIO.write(image, "png", file);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
--
▄▄ ▄▄ ▄▄▄ ▄ ▄▄▄
▄ ▄ ▄ ▄▄ ▄ ▄▄
▄ ▄ ▄ ▄ ▄▄
▄ ▄ ▄
▄ ▄ ▄ ▄ ▄▄
▄ ▄ ▄▄▄ ▄ ▄ ▄ ▄▄▄▄
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.213.190
推 sbrhsieh:要把元件外觀畫在圖上請使用Component-printAll method 04/30 02:03
推 sbrhsieh:Draw 元件劃線時要使用非黑色。 04/30 02:09
→ ozone:我用print或printAll 畫出的每個圖案都不會再有之前的線條了 04/30 02:15
→ ozone:可是..為什麼會這樣啊? 用print畫 背景要怎麼用黑色之外的? 04/30 02:21
推 neigence:super.paint? 04/30 09:25
推 xlk:paintComponent()裡用setBackground(Color.WHITE);改背景色 04/30 14:02
→ ozone:我有用但沒用 事實上背景預設就是白的但用print存檔變成黑的 04/30 23:52
→ ozone:在paintComponent裡 先super.paintComponent(g)清畫面就ok了 05/01 00:28