⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panelpic.java

📁 一个简单的绘图程序
💻 JAVA
字号:
package grapro;
import java.awt.*;
import javax.swing.JPanel;
import java.awt.event.*;
import java.awt.image.*;

public class PanelPic extends JPanel
{
	int startx,starty,oldx,oldy,newx,newy;
    int action;
    public Color cl;
    public int mode;
    public boolean isempty;
    public Image ibuff;
    public Graphics buffgra;
    public boolean hasbuff;
    Image img;
    public PanelPic()
    {
     try{
     jbInit();}catch(Exception ex){ex.printStackTrace();}	
    }	
    ///////////////////////////////////panelpic
    void jbInit() throws Exception
    {
     this.setBackground(Color.white);	
     this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
     {public void mouseDragged(MouseEvent e){
       this_mouseDragged(e);}
      });
      this.addMouseListener(new java.awt.event.MouseAdapter()
     {public void mousePressed(MouseEvent e){
       this_mousePressed(e);}
      public void mouseReleased(MouseEvent e){
       this_mouseReleased(e);}
      });
      /////////////////////////mouse event
      startx=-1;
      starty=-1;
      oldx=-1;
      oldy=-1;
      newx=-1;
      newy=-1;
      action=-1;
      mode=1;
      hasbuff=false;
      isempty=true;
    }
    //////////////////////////////////jbinit
    public void pdraw(Graphics gra)
    {
     gra.setColor(this.getForeground());
     if(mode==4)
     {
     	gra.setPaintMode();
     	switch(action)
     	{
     	 case 1:
     	 oldx=newx;
     	 oldy=newy;
     	 drawpic(gra,oldx,oldy,newx,newy);
     	 break;
     	 case 2:
     	 drawpic(gra,oldx,oldy,newx,newy);
     	 oldx=newx;
     	 oldy=newy;
     	 break;
     	 case 3:
     	 drawpic(gra,oldx,oldy,newx,newy);
     	 startx=-1;
         starty=-1;
         oldx=-1;
         oldy=-1;
         newx=-1;
         newy=-1;
         break;
     	 default :break;	
     	}
     	repaint();
     	return;
     }/////////////////////////mode=4
          if(mode==5)
     {
     	gra.setPaintMode();
     	gra.setColor(Color.white);
     	switch(action)
     	{
     	 case 1:
     	 drawpic(gra,oldx,oldy,newx,newy);
     	 break;
     	 case 2:
         drawpic(gra,oldx,oldy,newx,newy);
     	 oldx=newx;
     	 oldy=newy;
     	 break;
     	 case 3:
     	 drawpic(gra,oldx,oldy,newx,newy);
     	 startx=-1;
         starty=-1;
         oldx=-1;
         oldy=-1;
         newx=-1;
         newy=-1;
         break;
     	 default :break;	
     	}
     	repaint();
     	return;
     }//////////////////////mode=5
    switch(action)
    {
     case 1:
     oldx=newx;
     oldy=newy;
     if(mode!=3)
     	drawpic(gra,startx,starty,newx,newy);	
     break;
     case 2:
     gra.setXORMode(Color.white);
     drawpic(gra,startx,starty,oldx,oldy);
     drawpic(gra,startx,starty,newx,newy);
     oldx=newx;
     oldy=newy;
     break;
     case 3:
     gra.setXORMode(Color.white);
     drawpic(gra,startx,starty,oldx,oldy);
     gra.setPaintMode();
     drawpic(gra,startx,starty,newx,newy);
     if(!isempty)
     {
      fillpic(gra,startx,starty,newx,newy);	
     }     
     	 startx=-1;
         starty=-1;
         oldx=-1;
         oldy=-1;
         newx=-1;
         newy=-1;
         break;
     default :break;     	
    }/////////////////////////switch
    repaint(); 	
    }
    /////////////////////////////////////pdraw
    void this_mousePressed(MouseEvent e)
    {
     startx=e.getX();
     starty=e.getY();
     newx=startx;
     newy=starty;
     action=1;
     if(ibuff==null)
     init_buff();
     pdraw(buffgra);	
    }
    void this_mouseDragged(MouseEvent e)
    {
     newx=e.getX();
     newy=e.getY();
     action=2;pdraw(buffgra);
     ////////////??????????	
    }
    void this_mouseReleased(MouseEvent e)
    {
     newx=e.getX();
     newy=e.getY();
     action=3;pdraw(buffgra);	
    }     
    //////////////////////////mouse
    void drawpic(Graphics gra,int x1,int y1,int x2,int y2)
    {
     int tx,ty;
     switch(mode)
     {
       case 1:
              gra.drawLine(x1,y1,x2,y2);
              break;
       case 2:
              if(x1>x2)
             { tx=x1;
               x1=x2;
               x2=tx;} 
              if(y1>y2)
             {
               ty=y1;
               y1=y2;
               y2=ty; 	
             }
             gra.drawRect(x1,y1,x2-x1,y2-y1);
             break;
       case 3:
              if(x1>x2)
             { tx=x1;
               x1=x2;
               x2=tx;} 
              if(y1>y2)
             {
               ty=y1;
               y1=y2;
               y2=ty; 	
             }
             gra.drawOval(x1,y1,x2-x1,y2-y1);
             break;
       case 4:
             gra.drawLine(x1,y1,x2,y2);
             break;
       case 5:
             gra.drawRect(x2-5,y2-5,10,10);
             gra.fillRect(x2-5,y2-5,10,10);
             break;
       default:break;                      	
     }	
     ////????
    }  
    /////////////////////////////drawpic
    void fillpic(Graphics gra,int x1,int y1,int x2,int y2)
    {
     int tx,ty;
     switch(mode)
     {
       case 2:
              if(x1>x2)
             { tx=x1;
               x1=x2;
               x2=tx;} 
              if(y1>y2)
             {
               ty=y1;
               y1=y2;
               y2=ty; 	
             }
             gra.fillRect(x1,y1,x2-x1,y2-y1);
             break;
       case 3:
              if(x1>x2)
             { tx=x1;
               x1=x2;
               x2=tx;} 
              if(y1>y2)
             {
               ty=y1;
               y1=y2;
               y2=ty; 	
             }
             gra.fillOval(x1,y1,x2-x1,y2-y1);
             break;
       default:break;                      	
     }	
     repaint();
    }
    ////////////////////////////fillpic
    public void paintComponent(Graphics gra)
    {
      super.paintComponent(gra);
      if(ibuff!=null)
      gra.drawImage(ibuff,0,0,this);	
    }/////////////////////////////////////paintcomponent
    public void init_buff()
    {
     ibuff=createImage(getWidth(),getHeight());
     buffgra=ibuff.getGraphics();
     buffgra.setColor(Color.white);
     buffgra.fillRect(0,0,getWidth(),getHeight());
     buffgra.setColor(Color.black);	
    }//////////////////////////init buff
    public void loadimage (String s)
    {
    	img=Toolkit.getDefaultToolkit().getImage(s);
    	if(ibuff==null)
    	init_buff();
    	buffgra.drawImage(img,0,0,getWidth(),getHeight(),this);
    }///////////////////////////////////loadimage
    public boolean imageUpdate(Image img,int flags,int x,int y,int w,int h)
    {
    	Color col;
    	if(flags==ImageObserver.ALLBITS)
    	{
    		col=buffgra.getColor();
    		buffgra.setColor(Color.white);
    		buffgra.fillRect(0,0,getWidth(),getHeight());
    		buffgra.drawImage(img,0,0,getWidth(),getHeight(),this);
    		buffgra.setColor(col);
    		repaint();
    		return false;
    	}
    	return true;
    }////////////////////////imageUpdate
    public void clearAll()
    {  if(buffgra!=null)
      {
    	Color col=buffgra.getColor();
    	buffgra.setColor(Color.white);
    	buffgra.fillRect(0,0,getWidth(),getHeight());
    	buffgra.setColor(col);
    	repaint();
      }
    }
           
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -