| 发表于:2007-02-01 11:22:0421楼 得分:10 |
import java.awt.*; import java.util.*; import java.awt.geom.*; import java.awt.image.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import com.sun.image.codec.jpeg.*; class one {int x,y; one(int x,int y) {this.x=x;this.y=y; } } public class ex_12_1_1 extends canvas implements mousemotionlistener,mouselistener,actionlistener { int x=-1,y=-1,橡皮擦通知=0,清除通知=0; vector v=null;int n=1; graphics2d ggg ; bufferedimage image; frame window; button 保存,调色板,橡皮,清除,画笔,获取屏幕,绘制图形; color 画笔颜色; panel pcenter,psouth,pnorth; public ex_12_1_1() { 保存=new button( "将绘制的图形或屏幕保存为jpg文件 "); 获取屏幕=new button( "获取屏幕 "); 绘制图形=new button( "绘制图形 "); 调色板=new button( "打开调色板 "); 画笔=new button( "画笔 "); 橡皮=new button( "橡皮 "); 清除=new button( "清除 "); 调色板.addactionlistener(this); 绘制图形.addactionlistener(this); 保存.addactionlistener(this); 画笔.addactionlistener(this); 橡皮.addactionlistener(this); 清除.addactionlistener(this); 获取屏幕.addactionlistener(this); 画笔颜色=new color(0,0,0); addmousemotionlistener(this); addmouselistener(this); v=new vector(); setbackground(color.white); image=new bufferedimage(200,200,bufferedimage.type_int_rgb); ggg=image.creategraphics(); rectangle2d rect=new rectangle2d.double(0,0,200,200); ggg.setcolor(getbackground()); ggg.fill(rect); window=new frame( "jpeg图像生成器 "); pcenter=new panel(); pcenter.setlayout(null); pcenter.add(this); pcenter.setbackground(color.gray); this.setbounds(80,30,210,210); window.add(pcenter,borderlayout.center); pnorth=new panel(); pnorth.add(保存); pnorth.add(绘制图形); pnorth.add(获取屏幕); window.add(pnorth,borderlayout.north); psouth=new panel(); psouth.add(调色板); psouth.add(橡皮); psouth.add(清除); psouth.add(画笔); window.add(psouth,borderlayout.south); window.setvisible(true); window.addwindowlistener(new windowadapter() { public void windowclosing(windowevent e) { system.exit(0); } }); window.setbounds(100,80,390,380); window.validate(); } public void paint(graphics g) { if(x!=-1&&y!=-1&&橡皮擦通知==0&&清除通知==0) { g.setcolor(画笔颜色); n=v.size(); for(int i=0;i <n-1;i++) { one p1=(one)v.elementat(i); one p2=(one)v.elementat(i+1); g.drawline(p1.x,p1.y,p2.x,p2.y); ggg.setcolor(g.getcolor()); ggg.drawline(p1.x,p1.y,p2.x,p2.y); } } else if(橡皮擦通知==1&&清除通知==0) { g.setcolor(getbackground()); g.fillrect(x-2,y-2,4,4); ggg.setcolor(getbackground()); ggg.fillrect(x-2,y-2,4,4); } else if(清除通知==1&&橡皮擦通知==0) { g.setcolor(getbackground()); g.fillrect(0,0,200,200); ggg.setcolor(getbackground()); ggg.fillrect(0,0,200,200); } g.drawimage(image,0,0,200,200,this); } public void mousedragged(mouseevent e) { x=(int)e.getx(); y=(int)e.gety(); point p=new point(x,y); v.addelement(p); repaint(); } public void mousemoved(mouseevent e) {} public void mousepressed(mouseevent e) {} public void mousereleased(mouseevent e) { v.removeallelements(); } public void mouseentered(mouseevent e){} public void mouseexited(mouseevent e){} public void mouseclicked(mouseevent e){} public void update(graphics g) { { paint(g); } } public void actionperformed(actionevent e) { if(e.getsource()==橡皮) { 橡皮擦通知=1; 清除通知=0 ; } else if(e.getsource()==清除) { 清除通知=1; 橡皮擦通知=0; repaint(); } else if(e.getsource()==画笔) { 橡皮擦通知=0; 清除通知=0; } else if(e.getsource()==保存) { filedialog savedialog=new filedialog(window, "保存图型到jpg格式 ",filedialog.save); savedialog.setvisible(true); if(savedialog.getfile()!=null) { try{ string filename=savedialog.getfile(); fileoutputstream out=new fileoutputstream(filename); jpegimageencoder encoder=jpegcodec.createjpegencoder(out); jpegencodeparam param=encoder.getdefaultjpegencodeparam(image); param.setquality(1.0f,false); encoder.setjpegencodeparam(param); encoder.encode(image); out.close(); } catch(exception ee) { } } } else if(e.getsource()==获取屏幕) { robot robot=null; try{ robot=new robot(); } catch(exception er) { } rectangle screenrect=null; int width=gettoolkit().getscreensize().width; int height=gettoolkit().getscreensize().height; screenrect=new rectangle(0,0,width,height); window.setvisible(false); this.window.setvisible(false); image=robot.createscreencapture(screenrect); window.setvisible(true); repaint(); } else if(e.getsource()==调色板) { color tempcolor=jcolorchooser.showdialog(window, "调色板 ",画笔颜色); { if(tempcolor!=null) { 画笔颜色=tempcolor; 画笔.setforeground(画笔颜色); } } } else if(e.getsource()==绘制图形) { window.dispose(); this.window.dispose(); ex_12_1_1 canvas=new ex_12_1_1(); } } public static void main(string args[]) { new ex_12_1_1(); } } | | |
|