JAVA画图课程设计代码_第1页
JAVA画图课程设计代码_第2页
JAVA画图课程设计代码_第3页
JAVA画图课程设计代码_第4页
JAVA画图课程设计代码_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*houyang.java,可调画笔粗细-Java画图实验-swingcode-gcode*画直线,曲线,矩形,椭圆,可调颜色,有橡皮擦功能*可调画笔粗细*没有解决闪烁功能*hxz*/importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;importjava.awt.geom.*;classPoint{intx,y;Colorcol;inttool;intboarder;Point(intx,inty,Colorcol,inttool,intboarder){this.x=x;this.y=y;this.col=col;this.tool=tool;this.boarder=boarder;}}/**BasicStroke*Choice*validate();**/classpaintboardextendsFrameimplementsActionListener,MouseMotionListener,MouseListener,ItemListener{intxx0=0,yy0=0;intxx1=0,yy1=0;inttype=6;intx=-1,y=-1;intcon=1;//画笔大小intEcon=5;//橡皮大小inttoolFlag=0;//toolFlag:工具标记//toolFlag工具对应表://(0--画笔);(1--橡皮);(2--清除);//(3--直线);(4--圆);(5--矩形);Colorc=newColor(0,0,0);//画笔颜色BasicStrokesize=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细Pointcutflag=newPoint(-1,-1,c,6,con);//截断标志VectorpaintInfo=null;//点信息向量组intn=1;//*工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/PaneltoolPanel;Buttoneraser,drLine,drCircle,drRect;Buttonclear,pen;ChoiceColChoice,SizeChoice,EraserChoice;Buttoncolchooser;Label颜色,大小B,大小E;paintboard(Strings)//构造函数{super(s);addMouseMotionListener(this);addMouseListener(this);paintInfo=newVector();/*各工具按钮及选择项*///颜色选择ColChoice=newChoice();ColChoice.add("黑色");ColChoice.add("红色");ColChoice.add("蓝色");ColChoice.add("绿色");ColChoice.addItemListener(this);//画笔大小选择SizeChoice=newChoice();SizeChoice.add("1");SizeChoice.add("3");SizeChoice.add("5");SizeChoice.add("7");SizeChoice.add("9");SizeChoice.addItemListener(this);//橡皮大小选择EraserChoice=newChoice();EraserChoice.add("2");EraserChoice.add("3");EraserChoice.add("4");EraserChoice.add("5");EraserChoice.addItemListener(this);toolPanel=newPanel();clear=newButton("清除");eraser=newButton("橡皮");pen=newButton("画笔");drLine=newButton("画直线");drCircle=newButton("画圆形");drRect=newButton("画矩形");colchooser=newButton("显示调色板");//各组件事件监听clear.addActionListener(this);eraser.addActionListener(this);pen.addActionListener(this);drLine.addActionListener(this);drCircle.addActionListener(this);drRect.addActionListener(this);colchooser.addActionListener(this);颜色=newLabel("画笔颜色",Label.CENTER);大小B=newLabel("画笔大小",Label.CENTER);大小E=newLabel("橡皮大小",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();//dialogforsaveandloadaddWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;Pointp1,p2;n=paintInfo.size();if(toolFlag==2)g.clearRect(0,0,getSize().width,getSize().height);//清除switch(type){case3:Line2Dline=newLine2D.Double(xx0,yy0,xx1,yy1);g2d.draw(line);break;case4:Ellipse2Dellipse1=newEllipse2D.Double(xx0,yy0,Math.abs(xx1-xx0),Math.abs(yy1-yy0));g2d.draw(ellipse1);break;case5:Rectangle2Drect1=newRectangle2D.Double(xx0,yy0,Math.abs(xx1-xx0),Math.abs(yy1-yy0));g2d.draw(rect1);break;default:break;}for(inti=0;i<n-1;i++){p1=(Point)paintInfo.elementAt(i);p2=(Point)paintInfo.elementAt(i+1);size=newBasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);g2d.setColor(p1.col);g2d.setStroke(size);if(p1.tool==p2.tool){switch(p1.tool){case0://画笔Line2Dline1=newLine2D.Double(p1.x,p1.y,p2.x,p2.y);g2d.draw(line1);break;case1://橡皮g.clearRect(p1.x,p1.y,p1.boarder,p1.boarder);break;case3://画直线Line2Dline2=newLine2D.Double(p1.x,p1.y,p2.x,p2.y);g2d.draw(line2);break;case4://画圆Ellipse2Dellipse=newEllipse2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y));g2d.draw(ellipse);break;case5://画矩形Rectangle2Drect=newRectangle2D.Double(p1.x,p1.y,Math.abs(p2.x-p1.x),Math.abs(p2.y-p1.y));g2d.draw(rect);break;case6://截断,跳过i=i+1;break;default:break;}//endswitch}//endif}//endfor}publicvoiditemStateChanged(ItemEvente){if(e.getSource()==ColChoice)//预选颜色{Stringname=ColChoice.getSelectedItem();if(name=="黑色"){c=newColor(0,0,0);}elseif(name=="红色"){c=newColor(255,0,0);}elseif(name=="绿色"){c=newColor(0,255,0);}elseif(name=="蓝色"){c=newColor(0,0,255);}}elseif(e.getSource()==SizeChoice)//画笔大小{Stringselected=SizeChoice.getSelectedItem();if(selected=="1"){con=1;size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}elseif(selected=="3"){con=3;size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}elseif(selected=="5"){con=5;size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}elseif(selected=="7"){con=7;size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}elseif(selected=="9"){con=9;size=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);}}elseif(e.getSource()==EraserChoice)//橡皮大小{StringEsize=EraserChoice.getSelectedItem();if(Esize=="2"){Econ=3*3;}elseif(Esize=="3"){Econ=4*4;}elseif(Esize=="4"){Econ=5*5;}elseif(Esize=="5"){Econ=6*6;}}}publicvoidmouseDragged(MouseEvente){xx1=(int)e.getX();yy1=(int)e.getY();Pointp1;switch(toolFlag){case0://画笔x=(int)e.getX();y=(int)e.getY();p1=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p1);repaint();break;case1://橡皮x=(int)e.getX();y=(int)e.getY();p1=newPoint(x,y,null,toolFlag,Econ);paintInfo.addElement(p1);repaint();break;case3:case4:case5:repaint();break;default:}//repaint();}publicvoidmousePressed(MouseEvente){xx0=(int)e.getX();yy0=(int)e.getY();Pointp2;switch(toolFlag){case3://直线type=3;x=(int)e.getX();y=(int)e.getY();p2=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p2);break;case4://圆type=4;x=(int)e.getX();y=(int)e.getY();p2=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p2);break;case5://矩形type=5;x=(int)e.getX();y=(int)e.getY();p2=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p2);break;default:type=6;}}publicvoidmouseReleased(MouseEvente){Pointp3;switch(toolFlag){case0://画笔paintInfo.addElement(cutflag);break;case1://eraserpaintInfo.addElement(cutflag);break;case3://直线x=(int)e.getX();y=(int)e.getY();p3=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p3);paintInfo.addElement(cutflag);repaint();break;case4://圆x=(int)e.getX();y=(int)e.getY();p3=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p3);paintInfo.addElement(cutflag);repaint();break;case5://矩形x=(int)e.getX();y=(int)e.getY();p3=newPoint(x,y,c,toolFlag,con);paintInfo.addElement(p3);paintInfo.addElement(cutflag);repaint();break;default:}}publicvoidmo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论