




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
/*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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 24498-2025建筑門窗、幕墻用密封膠條
- 戰(zhàn)略合作合同協議書(經典)
- 租賃合同變更及轉讓協議模板
- 建筑承包合同協議書格式
- 張偉房地產開發(fā)合同糾紛案件解析
- 2024年人教版九年級中考英語現在進行時教學設計
- 合伙創(chuàng)業(yè)合同書
- 加盟合作合同協議
- 10《青山處處埋忠骨》教學設計-2023-2024學年統(tǒng)編版語文五年級下冊
- 供水改造工程合同范本-施工專用
- 廚房菜品出品標準培訓
- 【基于單片機的超市自動存儲柜的設計與實現(論文)8700字】
- 2024年銀行考試-商業(yè)銀行考試近5年真題附答案
- 招聘筆試題與參考答案(某大型央企)2024年
- 全國裝配式建筑職業(yè)技能競賽考試題庫
- Nikon尼康D3100中文說明書
- 人教版四年級上冊數學期末試卷(6套)
- FZ∕T 73037-2019 針織運動襪行業(yè)標準
- 16J914-1 公用建筑衛(wèi)生間
- 春節(jié)的那些事作文6篇
- (完整版)機房安全檢查表
評論
0/150
提交評論