/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package makejpeg; /** * * @author Administrator */ 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 Point {int x,y; Point(int x,int y) {this.x=x;this.y=y; } } public class MakeJPEG 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 MakeJPEG() { 保存=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++) { Point p1=(Point)v.elementAt(i); Point p2=(Point)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(); MakeJPEG canvas=new MakeJPEG(); } } public static void main(String args[]) { new MakeJPEG(); } }
最近下载更多
段朝洪 LV15
2020年11月21日
wei112233 LV15
2020年2月2日
yongzheng132 LV17
2019年6月24日
无人区老大 LV2
2019年6月22日
卡布奇诺_懵懂 LV3
2019年6月14日
无名氏111 LV33
2019年4月25日
publicclass LV12
2019年1月20日
848581720 LV10
2018年7月29日
嘟嘟嘟666 LV1
2018年6月2日
xturuanjian LV4
2018年1月8日
最近浏览更多
2385649653 LV7
2023年6月25日
luo110012 LV9
2023年5月17日
llxxtt LV2
2023年5月14日
jack789
2022年9月22日
暂无贡献等级
微信网友_5992582549164032 LV6
2022年6月29日
lhkong00
2022年4月22日
暂无贡献等级
781530708
2022年4月16日
暂无贡献等级
977903096 LV10
2022年3月12日
lizhihao0107 LV1
2021年12月28日
dongzhan LV12
2021年12月16日