作者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
1F:推 sbrhsieh:要把元件外观画在图上请使用Component-printAll method 04/30 02:03
2F:推 sbrhsieh:Draw 元件划线时要使用非黑色。 04/30 02:09
3F:→ ozone:我用print或printAll 画出的每个图案都不会再有之前的线条了 04/30 02:15
4F:→ ozone:可是..为什麽会这样啊? 用print画 背景要怎麽用黑色之外的? 04/30 02:21
5F:推 neigence:super.paint? 04/30 09:25
6F:推 xlk:paintComponent()里用setBackground(Color.WHITE);改背景色 04/30 14:02
7F:→ ozone:我有用但没用 事实上背景预设就是白的但用print存档变成黑的 04/30 23:52
8F:→ ozone:在paintComponent里 先super.paintComponent(g)清画面就ok了 05/01 00:28