JAVA畫圖課程設計代碼_第1頁
JAVA畫圖課程設計代碼_第2頁
JAVA畫圖課程設計代碼_第3頁
JAVA畫圖課程設計代碼_第4頁
JAVA畫圖課程設計代碼_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

/*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("顯示調色板");//各組件事件監(jiān)聽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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論