計算機圖形學(xué)實驗報告6_第1頁
計算機圖形學(xué)實驗報告6_第2頁
計算機圖形學(xué)實驗報告6_第3頁
計算機圖形學(xué)實驗報告6_第4頁
計算機圖形學(xué)實驗報告6_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、計算機圖形學(xué)實驗6實驗報告實驗題目: 簡單Java繪圖板程序?qū)嶒瀮?nèi)容:1 閱讀理解本試驗提供的參考資料。2編寫并調(diào)通一個簡單繪圖板的java程序。參考資料:1 pb.java 2 Java圖形處理介紹.doc基本概念:1在編寫顯示圖形的JAVA程序中,需要經(jīng)常覆蓋一些方法,其中使用的最多的就是paint()、repaint()和update()方法。 Paint() :每次applet被其他窗口覆蓋后重新顯示時,都會調(diào)用paint()方法,在paint()方法中會調(diào)用repaint()方法; Repaint(): repaint()方法強制Applet進行重新繪制。調(diào)用repaint()方法之

2、后會接著調(diào)用update()方法。Repaint()方法有三種調(diào)用方式:l public void repaint(long tm)功能:每隔tm毫秒進行重繪;l public void repaint(int x, int y, int width, int height)功能:重繪由參數(shù)指定的矩形區(qū)域;l public void repaint(long tm, int x, int y, int width, int height)功能:每隔tm毫秒對指定矩形區(qū)域進行重繪;Update() :update()方法默認的行為是先使用背景色填充applet,然后再調(diào)用paint() 方法2

3、顏色模型繪制圖形的過程就是布置布置顏色的過程,為了將二進制數(shù)字變成屏幕顏色,需要采用一些規(guī)則,Java把這個規(guī)則包裝在顏色模型中。 Java的32位顏色模型Java將顏色表示為32位。在缺省情況下,用于表示圖形的32位數(shù)中8位用于alpha,8位用于紅,8位用于綠,8位用于藍。這些值恰好放進一個32位的int數(shù)中。 ColorModel類(在java.awt.image包中)有兩個子類,包裝了兩大顏色模型:l DirectColorModel支持將32位整型數(shù)分配成用不同位數(shù)和位的位置用以表示alpha、紅、綠、藍。l IndexColorModel支持查找表。顏色表示成字節(jié),用于對表索引。真

4、實顏色值是表中的整型數(shù),用缺省顏色模型進行翻譯。直接顏色模型(DirectColorModel)直接顏色模型在程序中指定整型數(shù)中的多少位和哪些位分別用于表示alpaha、紅、綠、藍四個屬性。在這里必須注意的是,在直接顏色模型中,每一個屬性的位必須連接,且不能與另一個屬性的位重疊。DirectColorModel類有兩個構(gòu)造器,都要求用一個整數(shù)指定模型的位寬(當(dāng)前模型用32位,舊式顏色模型用8位)。每種顏色(紅、綠、藍)用一個整數(shù),也可以用第五個整數(shù)指定alpha。l DirectColorModel(int nbits,int redmask,int greenmask,int,bluemas

5、k)l DirectColorModel(int nbits,int redmask,int greenmask,int bluemask,int alphamask)掩膜就是將整數(shù)中對應(yīng)顏色所在位進行設(shè)置的整數(shù)。例如,用1位表示紅色、3位表示綠色、20位表示藍色的顏色模型構(gòu)造如下:model=new DirectColorModel(32,0x800000,0x700000,0x0fffff); 索引顏色模型(IndexColorModel)ColorModel類的另一個顏色模型是索引顏色模型IndexColorModel。索引顏色模型把顏色值看成紅、綠、藍數(shù)值查找表中的索引,在Java中索

6、引是個字節(jié)。實際要查找3個表,各對應(yīng)一個主顏色(另外,你還可以用第4個表查找ALPHA)。每個表項包含8位,用于指定顏色強度。對于使用較少顏色的圖形,索引顏色模型通過了方便的映射機制,這個機制特別適用于圖形要構(gòu)造成數(shù)字信息時。索引顏色模型也可以用于繪制不規(guī)則形狀。IndexColorModel類的構(gòu)造器有很多過載,最簡單的形式是:IndexColorModel(int nBits,int nColors,byte reds,byte greens,byte blues)索引顏色模型的主要好處是包裝了查找過程,另一個附帶效果是只用8位而不是32位表示圖素。這就節(jié)省了75,這在程序使用幾個大圖形時

7、效果會很明顯。還有一個好處是加強了圖形過濾性能。3圖象的裝入 在Java中Image是一個抽象類,是無法構(gòu)造的。創(chuàng)建圖形時,使用Component類中的CreateImage方法,這種方法通常只是讓它的同級件建立圖形。在特定平臺上對本地方法的一組調(diào)用成為同級件。使用CreateImage()主要是對本地方法的調(diào)用,通過這種調(diào)用,返回的對象是Image的特定平臺子類。圖形也可以通過Component類的getImage方法從遠程文件裝入。遠程裝載最簡單的辦法是直接使用getImage連接擁有遠程圖形文件的機器,裝入文件、分析文件、構(gòu)造并返回圖形。在實際中,Java對遠程圖形文件都執(zhí)行下列策略:所

8、有遠程圖形都使用異步線程裝入。圖形需要使用或“觀察”(Observe)時才開始裝入線程。這是因為直接裝載會引起很大的延遲。4 imageUpdate的標志值標志含義l ImageObserver.WIDTH 圖形寬度已經(jīng)修改,可以從width參數(shù)讀或用圖形的getwidth()方法讀取 l ImageObserver.HEIGHT 圖形高度已經(jīng)修改,可以從height參數(shù)讀或用圖形的getHeight()方法讀取l ImageObserver.PROPERTIES 圖形屬性已經(jīng)修改,可以用圖形的Getproperties()方法讀取l ImageObserver.SOMEBITS 圖形的多個圖

9、素已經(jīng)傳送l ImageObserver.FRAMEBITS 多幀圖形的一個幀已經(jīng)傳送l ImageObserver.ALLBITS 整個圖形已經(jīng)完畢l ImageObserver.ERROR 生成中出現(xiàn)了錯誤l ImageObserver.ABORT 生成異常終止5內(nèi)存圖象源(MemoryImageSource)在Java中另一種圖形源是內(nèi)存:你可以在程序中建立整形或字節(jié)數(shù)組來表示圖素值,并利用Java的MemoryImageSource類構(gòu)造Image的實例。 MemoryImageSource的構(gòu)造器調(diào)用如下:MemoryImageSource(int width, int height

10、, int pixels, int arrayOffset, int scanwidth) MemoryImageSource有各種表示顏色的選項。MemoryImageSource最簡單的輸入形式是整型數(shù)組,正如我們在前面顏色模型中提到的一樣,每個整型數(shù)用8位(0-7位)表示藍色,8位(8-15位)表示綠色,8位(16-23位)表示紅色,最顯著的8位(24-31位)表示顏色的alpha或不透明度。一般的系統(tǒng)處理無法訪問的透明度組合時用繪制無法訪問的顏色所用的辦法:配色(dithering),這是因為真正的不透明度需要十分昂貴的硬件設(shè)備。 如果MemoryImageSource的整型數(shù)組使用的

11、是二維數(shù)組,處理出來將會比較容易,但這里的整型數(shù)組是一維的。圖素值表示如下:對于n列圖形,前n列表示第一個掃描行;第二n列表示第二個掃描行,等等。數(shù)組排版之后,內(nèi)存圖形源可以從整個數(shù)組或部分數(shù)組構(gòu)造。MemoryImageSource構(gòu)造器要傳入所要圖性的尺寸,int數(shù)組,數(shù)組偏離量和int數(shù)組表示的假象圖形寬度。最后一個參數(shù)用于所要圖形是假想整圖的子集時。6圖象生成器、使用者和過濾器(ImageProducer、ImagerConsumer & ImageFileter) 將遠程gif文件變成圖素值的隱藏對象和相當(dāng)直觀的內(nèi)存圖形源都是圖形生成器。它們實現(xiàn)java.awt.image包

12、中的ImageProducer接口。圖形生成器的任務(wù)是將圖素值傳遞給圖形使用者。Java.awt.image包中除了ImageProducer外,還有個ImageConsumer接口。圖形的建立是生成器和使用者之間對話的結(jié)果。生成器/使用者對話是由使用者啟動的,使用者告訴生成器開始生成。生成器作出的響應(yīng)是報告圖形的長度(如果可能),然后開始計算圖素值(或開始從遠程服務(wù)器文件取用)。生成器隨時向使用者發(fā)送新圖素并告訴使用者任務(wù)何時完成。ImageProcuder和ImageConsumer兩個接口比較復(fù)雜。ImageProducer具有允許多個使用者向生成器登記的方法。ImageConsumer

13、也有允許生成器提供更多關(guān)于圖形和生成器信息的方法。 ImageFileterAWT通過允許你在圖象生成者和圖象使用者之間插入圖象過濾器的方式支持對圖象的操作。一個圖象過濾器實際上就是一個ImageFilter類,它放置在一個生產(chǎn)者和一個使用者之間,在使用者得到圖象之前改變圖象的數(shù)據(jù)。過濾器子類第一子類叫CropImageFilter。構(gòu)造器接受x、y、width和height。過濾器取出這些參數(shù)指定的圖形子集。第二個子類是RGBImageFilter。這是個抽象類,其抽象方法FilterRGB(int x、int y、int rgb)應(yīng)由子類改寫。X和y參數(shù)是過濾的圖素坐標 ,rgb是要轉(zhuǎn)換的

14、圖素值。注意rgb表示成缺省顏色模型(alpha:紅、綠、藍)。這種方法應(yīng)返回表示新轉(zhuǎn)變的圖素值的int。通常RGBImageFilter生成子類生成上下文無關(guān)的過濾器,即rgb轉(zhuǎn)換算法與轉(zhuǎn)換圖素位置和其它圖素值無關(guān)的過濾器。算法設(shè)計:1定義點類class Point implements Serializable 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

15、.tool = tool; /不同繪圖工具this.boarder = boarder; 2定義繪圖板類 paintboardPaintboard類繼承Frame類,用于實現(xiàn)畫圖板的總體構(gòu)架。包括菜單欄設(shè)計,工具欄設(shè)計,畫圖區(qū)創(chuàng)建,鼠標事件等。 構(gòu)造方法paintboard(String s) super(s);addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /幾何圖元信息/*各工具按鈕及選擇項*/ /顏色選擇 ColChoice = new Choice(); ColChoice.

16、add("black"); ColChoice.add("red"); ColChoice.add("blue"); ColChoice.add("green"); ColChoice.addItemListener(this); /畫筆大小選擇 SizeChoice = new Choice(); SizeChoice.add("1"); SizeChoice.add("3"); SizeChoice.add("5"); SizeChoice.add(&

17、quot;7"); SizeChoice.add("9"); SizeChoice.addItemListener(this); /橡皮大小選擇 EraserChoice = new Choice(); EraserChoice.add("5"); EraserChoice.add("9"); EraserChoice.add("13"); EraserChoice.add("17"); EraserChoice.addItemListener(this); toolPanel = n

18、ew Panel(); /命令按鈕clear = new Button("清除"); eraser = new Button("橡皮"); pen = new Button("畫筆"); drLine = new Button("畫直線"); drCircle = new Button("畫圓形"); drRect = new Button("畫矩形"); openPic = new Button("打開圖畫"); savePic = new Button

19、("保存圖畫"); colchooser = new Button("顯示調(diào)色板"); /各組件事件監(jiān)聽 clear.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); openPic.addActionListener(this); save

20、Pic.addActionListener(this); colchooser.addActionListener(this); /標簽顏色 = new Label("畫筆顏色",Label.CENTER); 大小B = new Label("畫筆大小",Label.CENTER); 大小E = new Label("橡皮大小",Label.CENTER); /面板添加組件 toolPanel.add(openPic); toolPanel.add(savePic); toolPanel.add(pen); toolPanel.add

21、(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,

22、BorderLayout.NORTH); setBounds(60,60,900,600); setVisible(true); validate();/強制顯示容器/dialog for save and load openPicture = new FileDialog(this,"打開圖畫",FileDialog.LOAD); openPicture.setVisible(false); savePicture = new FileDialog(this,"保存圖畫",FileDialog.SAVE); savePicture.setVisible

23、(false); /強制關(guān)閉窗口響應(yīng)方法openPicture.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) openPicture.setVisible(false); ); savePicture.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) savePicture.setVisible(false); ); addWindowListener(new WindowAd

24、apter() public void windowClosing(WindowEvent e) System.exit(0); ); 繪圖方法paint()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);/清除 for(int i=0; i<n ;i+) p1 = (Point)paintInfo.e

25、lementAt(i); p2 = (Point)paintInfo.elementAt(i+1); size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); g2d.setColor(p1.col); g2d.setStroke(size); if(p1.tool=p2.tool) switch(p1.tool) case 0:/畫筆 Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line1); brea

26、k; case 1:/橡皮 g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 3:/畫直線 Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:/畫圓 Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y); g2d.draw(ellipse); break; cas

27、e 5:/畫矩形 Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y); g2d.draw(rect); break; case 6:/截斷,跳過 i=i+1; break; default : /end switch /end if /end for /end繪圖方法paint()代碼: /定義點類class Point implements Serializable int x,y; Color col; int tool; int boarder; P

28、oint(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; /點類定義結(jié)束/定義繪圖板類 paintboard,帶事件監(jiān)聽class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener int x = -1, y = -1; int

29、 con = 1;/畫筆大小 int Econ = 5;/橡皮大小 int toolFlag = 0;/toolFlag:工具標記 /toolFlag工具對應(yīng)表: /(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);/截斷標

30、志 Vector paintInfo = null;/點信息向量組 (幾何圖元信息)int n = 1; FileInputStream picIn = null;/文件流保存、讀入所畫圖形FileOutputStream picOut = null; ObjectInputStream VIn = null; ObjectOutputStream VOut = null; / *工具面板-畫筆,直線,圓,矩形,多邊形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choic

31、e ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 顏色,大小B,大小E; Button openPic,savePic; FileDialog openPicture,savePicture; /文件名會話框/構(gòu)造方法paintboard(String s) super(s);addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /幾何圖元信息/*各工具按鈕及選擇項*/ /顏色選擇 ColChoice = new C

32、hoice(); ColChoice.add("black"); ColChoice.add("red"); ColChoice.add("blue"); ColChoice.add("green"); ColChoice.addItemListener(this); /畫筆大小選擇 SizeChoice = new Choice(); SizeChoice.add("1"); SizeChoice.add("3"); SizeChoice.add("5"

33、); SizeChoice.add("7"); SizeChoice.add("9"); SizeChoice.addItemListener(this); /橡皮大小選擇 EraserChoice = new Choice(); EraserChoice.add("5"); EraserChoice.add("9"); EraserChoice.add("13"); EraserChoice.add("17"); EraserChoice.addItemListener(t

34、his); toolPanel = new Panel(); /命令按鈕clear = new Button("清除"); eraser = new Button("橡皮"); pen = new Button("畫筆"); drLine = new Button("畫直線"); drCircle = new Button("畫圓形"); drRect = new Button("畫矩形"); openPic = new Button("打開圖畫"); s

35、avePic = new Button("保存圖畫"); colchooser = new Button("顯示調(diào)色板"); /各組件事件監(jiān)聽 clear.addActionListener(this); eraser.addActionListener(this); pen.addActionListener(this); drLine.addActionListener(this); drCircle.addActionListener(this); drRect.addActionListener(this); openPic.addActionL

36、istener(this); savePic.addActionListener(this); colchooser.addActionListener(this); /標簽顏色 = new Label("畫筆顏色",Label.CENTER); 大小B = new Label("畫筆大小",Label.CENTER); 大小E = new Label("橡皮大小",Label.CENTER); /面板添加組件 toolPanel.add(openPic); toolPanel.add(savePic); toolPanel.add(

37、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); /工具面板到APPL

38、ET面板 add(toolPanel,BorderLayout.NORTH); setBounds(60,60,900,600); setVisible(true); validate();/強制顯示容器/dialog for save and load openPicture = new FileDialog(this,"打開圖畫",FileDialog.LOAD); openPicture.setVisible(false); savePicture = new FileDialog(this,"保存圖畫",FileDialog.SAVE); sav

39、ePicture.setVisible(false); /強制關(guān)閉窗口響應(yīng)方法openPicture.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) openPicture.setVisible(false); ); savePicture.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) savePicture.setVisible(false); ); addWindowLi

40、stener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); /構(gòu)造方法完畢/繪圖方法paint()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);/清除 for(int i=0; i<n ;

41、i+) p1 = (Point)paintInfo.elementAt(i); p2 = (Point)paintInfo.elementAt(i+1); size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); g2d.setColor(p1.col); g2d.setStroke(size); if(p1.tool=p2.tool) switch(p1.tool) case 0:/畫筆 Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p

42、2.y); g2d.draw(line1); break; case 1:/橡皮 g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 3:/畫直線 Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:/畫圓 Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y); g2

43、d.draw(ellipse); break; case 5:/畫矩形 Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y); g2d.draw(rect); break; case 6:/截斷,跳過 i=i+1; break; default : /end switch /end if /end for /end繪圖方法paint()/下拉式列表響應(yīng)方法public void itemStateChanged(ItemEvent e) if(e.getSo

44、urce()=ColChoice) /預(yù)選顏色 String name = ColChoice.getSelectedItem(); if(name="black") c = new Color(0,0,0); else if(name="red") c = new Color(255,0,0); else if(name="green") c = new Color(0,255,0); else if(name="blue") c = new Color(0,0,255); else if(e.getSource

45、()=SizeChoice) /畫筆大小 String selected = SizeChoice.getSelectedItem(); if(selected="1") con = 1; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected="3") con = 3; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(

46、selected="5") con = 5; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected="7") con = 7; size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); else if(selected="9") con = 9; size = new BasicStroke(con,BasicStroke.

47、CAP_BUTT,BasicStroke.JOIN_BEVEL); /畫筆大小if結(jié)束else if(e.getSource()=EraserChoice) /橡皮大小 String Esize = EraserChoice.getSelectedItem(); if(Esize="5") Econ = 5*2; else if(Esize="9") Econ = 9*2; else if(Esize="13") Econ = 13*2; else if(Esize="17") Econ = 17*3; /下拉式列

48、表響應(yīng)方法結(jié)束/鼠標拖曳事件響應(yīng)方法public void mouseDragged(MouseEvent e) Point p1 ; switch(toolFlag) case 0:/畫筆 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p1); repaint(); break; case 1:/橡皮 x = (int)e.getX(); y = (int)e.getY(); p1 = new Point(x, y, null, toolFl

49、ag, Econ); paintInfo.addElement(p1); repaint(); break; default : /鼠標拖曳事件響應(yīng)方法結(jié)束public void mouseMoved(MouseEvent e) /鼠標事件public void update(Graphics g) /刷新重繪paint(g); /鼠標press事件public void mousePressed(MouseEvent e) Point p2; switch(toolFlag) case 3:/直線 x = (int)e.getX(); y = (int)e.getY(); p2 = new

50、Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 4: /圓 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 5: /矩形 x = (int)e.getX(); y = (int)e.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2)

51、; break; default : /鼠標press事件結(jié)束/鼠標release事件:設(shè)置幾何圖元信息后調(diào)用paint()public void mouseReleased(MouseEvent e) Point p3; switch(toolFlag) case 0:/畫筆 paintInfo.addElement(cutflag); break; case 1: /eraser paintInfo.addElement(cutflag); break; case 3:/直線 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y

52、, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; case 4: /圓 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; case 5: /矩形 x = (int)e.getX(); y = (int)e.getY(); p3 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p3); paintInfo.addElement(cutflag); repaint(); break; default: /鼠標release事件結(jié)束public void mouseEntered(MouseEvent e) /實現(xiàn)鼠標事件接口方法public

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論