版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/*houyang.java,可調(diào)畫筆粗細(xì)-Java畫圖實(shí)驗(yàn)-swingcode-gcode*畫直線,曲線,矩形,橢圓,可調(diào)顏色,有橡皮擦功能*可調(diào)畫筆粗細(xì)*沒(méi)有解決閃爍功能*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:工具標(biāo)記//toolFlag工具對(duì)應(yīng)表://(0--畫筆);(1--橡皮);(2--清除);//(3--直線);(4--圓);(5--矩形);Colorc=newColor(0,0,0);//畫筆顏色BasicStrokesize=newBasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//畫筆粗細(xì)Pointcutflag=newPoint(-1,-1,c,6,con);//截?cái)鄻?biāo)志VectorpaintInfo=null;//點(diǎn)信息向量組intn=1;//*工具面板--畫筆,直線,圓,矩形,多邊形,橡皮,清除*/PaneltoolPanel;Buttoneraser,drLine,drCircle,drRect;Buttonclear,pen;ChoiceColChoice,SizeChoice,EraserChoice;Buttoncolchooser;Label顏色,大小B,大小E;paintboard(Strings)//構(gòu)造函數(shù){super(s);addMouseMotionListener(this);addMouseListener(this);paintInfo=newVector();/*各工具按鈕及選擇項(xiàng)*///顏色選擇ColChoice=newChoice();ColChoice.add("黑色");ColChoice.add("紅色");ColChoice.add("藍(lán)色");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("顯示調(diào)色板");//各組件事件監(jiān)聽(tīng)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://截?cái)啵^(guò)i=i+1;break;default:break;}//endswitch}//endif}//endfor}publicvoiditemStateChanged(ItemEvente){if(e.getSource()==ColChoice)//預(yù)選顏色{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=="藍(lán)色"){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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廣東農(nóng)工商職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)含答案詳解
- 2026年寧夏職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及參考答案詳解一套
- 2026年黑龍江幼兒師范高等??茖W(xué)校單招綜合素質(zhì)考試題庫(kù)含答案詳解
- 2026年天津工藝美術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)及參考答案詳解
- 2026年重慶科技大學(xué)單招綜合素質(zhì)考試題庫(kù)及答案詳解1套
- 2026年福州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)及參考答案詳解1套
- 2026年內(nèi)江衛(wèi)生與健康職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)及答案詳解1套
- 2026年鄭州汽車工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)及參考答案詳解1套
- 2026年青島工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)含答案詳解
- 2026年江蘇財(cái)會(huì)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及答案詳解1套
- 2025年葫蘆島市總工會(huì)面向社會(huì)公開招聘工會(huì)社會(huì)工作者5人備考題庫(kù)及參考答案詳解
- 2026班級(jí)馬年元旦主題聯(lián)歡晚會(huì) 教學(xué)課件
- 2025年沈陽(yáng)華晨專用車有限公司公開招聘?jìng)淇脊P試題庫(kù)及答案解析
- 2025年云南省人民檢察院聘用制書記員招聘(22人)筆試考試參考試題及答案解析
- 2025天津市第二批次工會(huì)社會(huì)工作者招聘41人考試筆試備考試題及答案解析
- 2025年樂(lè)山市商業(yè)銀行社會(huì)招聘筆試題庫(kù)及答案解析(奪冠系列)
- 江西省三新協(xié)同體2025-2026年高一上12月地理試卷(含答案)
- 2025新疆維吾爾自治區(qū)哈密市法院、檢察院系統(tǒng)招聘聘用制書記員(31人)筆試考試參考試題及答案解析
- 高層建筑消防安全教育培訓(xùn)課件(香港大埔區(qū)宏福苑1126火災(zāi)事故警示教育)
- 2025新疆和田和康縣、和安縣面向社會(huì)招聘事業(yè)單位工作人員108人(公共基礎(chǔ)知識(shí))測(cè)試題附答案解析
評(píng)論
0/150
提交評(píng)論