/*
 * 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日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友