【转】java,画图,可调画笔粗细

/*可调画笔粗细-Java画图实验-Java源代码 -good code
*画直线,曲线,矩形,椭圆,可调颜色,有橡皮擦功能
*可调画笔粗细
*没有解决闪烁功能
*hxz*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.awt.geom.*;
class Point
{
      int x,y;
      Color col;
      int tool;
      int boarder;
      Point(int x, int y, Color col, int tool, int boarder)
      {
            this.x = x;
            this.y = y;
            this.col = col;
            this.tool = tool;
            this.boarder = boarder;
       }
}


/*
*BasicStroke
*Choice
*validate();
**/
class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener
{
     int xx0=0,yy0=0;
     int xx1=0,yy1=0;
     int type=6;
     int x = -1, y = -1;
     int con = 1;//画笔大小
     int Econ = 5;//橡皮大小
     int toolFlag = 0;//toolFlag:工具标记
                 //toolFlag工具对应表:
                 //(0--画笔);(1--橡皮);(2--清除);
                 //(3--直线);(4--圆);(5--矩形);
                 
     Color c = new Color(0,0,0); //画笔颜色
     BasicStroke size = new BasicStroke (con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细
     Point cutflag = new Point(-1, -1, c, 6, con);//截断标志
     Vector paintInfo = null;//点信息向量组
     int n = 1;

     // *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/
     Panel toolPanel;
     Button eraser, drLine,drCircle,drRect;
     Button clear ,pen;
     Choice ColChoice,SizeChoice,EraserChoice;
     Button colchooser;
     Label 颜色,大小B,大小E;
     
       paintboard(String s)//构造函数
     {
            super(s);
            addMouseMotionListener(this);
            addMouseListener(this);
            paintInfo = new Vector();
          /*各工具按钮及选择项*/
            //颜色选择
            ColChoice = new Choice();
            ColChoice.add("黑色");
            ColChoice.add("红色");
            ColChoice.add("蓝色");
            ColChoice.add("绿色");
            ColChoice.addItemListener(this);
            //画笔大小选择
            SizeChoice = new Choice();
            SizeChoice.add("1");
            SizeChoice.add("3");
            SizeChoice.add("5");
            SizeChoice.add("7");
            SizeChoice.add("9");
            SizeChoice.addItemListener(this);
            //橡皮大小选择
            EraserChoice = new Choice();
            EraserChoice.add("2");
            EraserChoice.add("3");
            EraserChoice.add("4");
            EraserChoice.add("5");
            EraserChoice.addItemListener(this);
            
            toolPanel = new Panel();
            clear = new Button("清除");
            eraser = new Button("橡皮");
            pen = new Button("画笔");
            drLine = new Button("画直线");
            drCircle = new Button("画圆形");
            drRect = new Button("画矩形");
            colchooser = new Button("显示调色板");
            
            //各组件事件监听
            clear.addActionListener(this);
            eraser.addActionListener(this);
            pen.addActionListener(this);
            drLine.addActionListener(this);
            drCircle.addActionListener(this);
            drRect.addActionListener(this);
            colchooser.addActionListener(this);
            颜色 = new Label("画笔颜色",Label.CENTER);
            大小B = new Label("画笔大小",Label.CENTER);
            大小E = new Label("橡皮大小",Label.CENTER);
            //面板添加组件
            toolPanel.add(pen);
            toolPanel.add(drLine);
            toolPanel.add(drCircle);
            toolPanel.add(drRect);
            toolPanel.add(颜色); toolPanel.add(ColChoice);
            toolPanel.add(大小B); toolPanel.add(SizeChoice);
            toolPanel.add(colchooser);
            toolPanel.add(eraser);
            toolPanel.add(大小E); toolPanel.add(EraserChoice);
            toolPanel.add(clear);
            //工具面板到APPLET面板
            add(toolPanel,BorderLayout.NORTH);
            setBounds(60,60,800,650);
            setVisible(true);
            validate();
            
            //dialog for save and load
            addWindowListener(new WindowAdapter()
            {
                  public void windowClosing(WindowEvent e)
                   { System.exit(0);}
            });
      }
      
     public void paint(Graphics g)
     {
          Graphics2D g2d = (Graphics2D)g;
          Point p1,p2;
        n = paintInfo.size();
        if(toolFlag==2)
           g.clearRect(0,0,getSize().width,getSize().height);//清除
           
          switch(type)
          {
               case 3:
          Line2D line = new Line2D.Double(xx0,yy0,xx1,yy1);
          g2d.draw(line);
          break;
               case 4:
          Ellipse2D ellipse1 = new Ellipse2D.Double(xx0, yy0, Math.abs(xx1-xx0) ,Math.abs(yy1-yy0));
          g2d.draw(ellipse1);
          break;
               case 5:
          Rectangle2D rect1 = new Rectangle2D.Double(xx0, yy0, Math.abs(xx1-xx0) , Math.abs(yy1-yy0));
          g2d.draw(rect1);
          break;
          default :break;
          }
          
       for(int i=0; i

 

你可能感兴趣的:(Java基础)