

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第十章 文本顯示與圖形圖像處理,目 錄,重點與難點點撥,Java繪圖基礎,Java圖像處理,經典練習題,Graphics繪圖,字體設置,本章知識重點,GUI組件及Graphics類的繪圖方法,字體設置,基本圖形繪制的各方法及畫布Canvas,Java圖像處理,與圖形圖像處理相關的類,本章知識難點,Java繪圖基礎,Java的繪圖機制,與圖形圖像處理相關的類 java中支持圖形圖像處理的類與接口主要定義于java.awt類庫中,
2、Java繪圖基礎,Graphics類,Graphics類中封裝了幾乎所有的圖形處理的方法,該類用于在一個二維坐標系中繪制圖形與顯示格式化文字。由于Graphics類定義于java.awt包中,在繪制圖形的程序中,必須引入java.awt,即在程序開頭需加上以下語句: import java.awt.*; 或import java.awt.Graphics ;,Java繪圖基礎,Graphics類的繪圖區(qū)域
3、為能夠繪制并顯示圖形的一些組件,坐標原點在組件的左上角,X軸為水平方向,坐標值從左至右逐漸增大,Y軸在垂直方向,坐標值從上向下逐漸增大。Java坐標的度量單位是像素,在Java的圖形坐標系統(tǒng)中,坐標值只能為整數(shù)。由于不同的平臺具體實現(xiàn)繪圖功能中存在著一定差異,Graphics類為抽象類,不能用new命令創(chuàng)建Graphics類實例對象,Java只提供給用戶一個不依賴于具體平臺的通用接口,使用戶能夠調用Graphics類的各種繪圖方法,實現(xiàn)
4、繪圖與繪制文本的功能。,Java繪圖基礎,GUI程序中,文本的輸出顯示是作為圖形對象來處理的,控制臺應用程序中的System.out.println()方法,只能以DOS字符的形式,在命令行窗口上顯示文字。GUI界面中字符串信息的顯示,要使用Graphics或Graphics2D提供的繪制字符或字符串信息的成員方法。,圖形文本,Java繪圖基礎,Graphics類提供了三種繪制文字的方法:①字符串輸出方法:drawString(Str
5、ing s,int x,int y)。②字符數(shù)組輸出方法:drawChars(char[] s,int offset,int length,int x,int y)。③字節(jié)數(shù)組輸出方法:drawBytes(byte[] s,int offset,int length,int x,int y)。其中x、y參數(shù)為字符串輸出的位置坐標。例如:g. drawString(“我的愛好是讀書和聽音樂”,50,100);語句將會繪出一串文本,
6、輸出位置坐標為(50,100) 。,Java繪圖基礎,GUI編程中,Color類定義了操作顏色的常量與方法,該類的完整包路徑為java.awt.Color。 Color類常用的三種構造方法的定義為:①public Color(int r,int g,int b);②public Color(float r,float g,float b);③public Color(int rgb);Color類中封裝了常用的13種標準顏色
7、的符號常量。如: Color.BLACK Color.WHITE Color.RED Color.GREEN Color.BLUE Color.YELLOW 等,顏色設置,Java繪圖基礎,此外,Color類還提供了獲取RGB顏色分量的對應方法:①public int getRed(); //獲取當前顏色的紅色分量值(范圍為[0,255])。②public int getGre
8、en(); //獲取當前顏色的綠色分量值(范圍為[0,255])。③public int getBlue(); //獲取當前顏色的藍色分量值(范圍為[0,255])。,Java繪圖基礎,如創(chuàng)建一個以粉紅色pink(RGB值為:255,175,175)前景顯示“姓名”的標簽對象,可用以下語句實現(xiàn):Color labelColor=new Color(255,175,175);Label lblName=new Label
9、(“姓名”);lblName.setForeground(labelColor);或者用以下等價的方式實現(xiàn):Label lblName=new Label(“姓名”);lblName.setForeground(Color.PINK);,Java繪圖基礎,java.awt.Component類作為大多數(shù)GUI組件的基類,定義了paint()方法,用來實現(xiàn)在組件上繪制圖形的功能。applet小程序的基類:Applet或Japple
10、t,也間接地由Component類派生,因此applet小程序也具有paint()方法 paint()方法定義:void paint(Graphics g); paint()方法通常由系統(tǒng)自動調用,用戶一般不能直接在程序中顯式調用它,而是通過repaint()方法來間接調用它。組件首次顯示外觀時,applet小程序在被加載運行時,系統(tǒng)都會調用相關的paint()方法。,GUI組件的繪圖方法,Component
11、類與paint()方法,Java繪圖基礎,此外,Component類中還定義了另外兩個直接或間接調用paint()方法的方法:①更新方法update(Graphics g);當組件的尺寸、外觀等被改變時,系統(tǒng)將調用此方法,重新繪制組件。update()方法的實現(xiàn)中包含了對paint()方法的調用。②重繪方法repaint();該方法沒有參數(shù),執(zhí)行時會清除組件的原有背景圖形,并使用paint()方法重新繪制該組件。用戶可以在程序中
12、直接調用repaint()方法,當組件為輕量級組件時,該方法會直接調用paint()方法,否則會通過調用update()方法間接調用paint()方法。,Java繪圖基礎,【例】在一個300×200的Frame窗口內,用紅色繪制四葉玫瑰曲線。,Java繪圖基礎,import java.awt.*;import java.awt.event.*;import java.awt.Color;public class Exa_
13、10_1 extends Frame{ private static final double PI=3.1415926; private int appWidth,appHeight; public Exa_10_1(String title){ super(title); this.setSize(300,200); //實現(xiàn)關閉窗口的功能 this.addWindo
14、wListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); },Java繪圖基礎,public void paint(Graphics g){ super.paint(g);//調用父類的繪制方法 //獲取當前窗口的寬度與高度值 appWidth=this
15、.getWidth(); appHeight=this.getHeight(); int ox,oy,x,y; //設置原點(ox,oy)的坐標為當前窗口中心 ox=appWidth/2; oy=appHeight/2; g.setColor(Color.RED); //設置繪圖的前景色,Java繪圖基礎,//繪制坐標軸 g.
16、drawLine(ox,10,ox,appHeight); g.drawLine(0,oy,appWidth,oy); //定義控制角度與半徑變化的變量 int i,j=10; double angle,r; while (j<100){ for(i=0;i<1023;i++){ //計算最新的角度 angle = i*PI/512;
17、 r = j*Math.sin(2*angle);,Java繪圖基礎,//計算最新的軌跡點坐標 x =(int)Math.round(r*Math.cos(angle)*2); y =(int)Math.round(r*Math.sin(angle)); g.fillOval(ox+x,oy+y,1,1); //畫軌跡點 } j = j +
18、 5; //增進的步長 } } public static void main(String[] args){ Exa_10_1 app=new Exa_10_1("Paint() Method Usage"); app.setVisible(true); }},Java繪圖基礎,組件的基類Component類提供了一組get類型的方法用來獲取當前繪圖上下文環(huán)境的一些重
19、要參數(shù)。getGraphics()為當前組件創(chuàng)建 graphics上下文環(huán)境getGraphicsConfiguration()獲取相關的Graphics設置getForeground()獲取與當前組件的前景顏色getBackground()獲取與當前組件的背景顏色getFont()獲取與當前組件的字體對象getFontMetrics(Font font)獲取指定字體的樣式信息,Component類的get/set方法組,J
20、ava繪圖基礎,Component類還提供了一組用來設置外觀與行為的set方法:①setEnabled(),設置組件的可用性。②setVisible(),設置組件的可見性。③setForeground(),設置組件的前景色。④setBackground(),設置組件的背景色。⑤setBounds(),設置組件的起始位置與尺寸大小。⑥setLocation(),設置組件的起始位置。⑦setSize(),設置組件的尺寸大小。
21、⑧setPreferredSize(),設置組件首選的尺寸。⑨setMaximumSize(),設置組件的最大尺寸。⑩setMinimumSize(),設置組件的最小尺寸。此外,常用的還有一個設置組件顯示文字字體類型與樣式的一個方法:public void setFont(Font f)。,Java繪圖基礎,【例】用組件的getGraphics()方法實現(xiàn)如下所述的功能:在一個300×200的JFrame窗口內,放置一個
22、標簽與一個按鈕,當點擊按鈕后,標簽中繪制一個黃色的橢圓,并在橢圓內顯示藍色的RGB值。,Java繪圖基礎,import java.awt.*;import java.awt.event.*;import java.awt.Color;import javax.swing.*;public class Exa_10_2 extends JFrame implements ActionListener{ private JLab
23、el jlblDraw=new JLabel(); private JButton jbtnDraw=new JButton("開始繪圖"); public Exa_10_2(String title){ super(title); this.setSize(300,200); jlblDraw.setSize(300,150); //實現(xiàn)關閉窗口的功能,Java
24、繪圖基礎,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jbtnDraw.addActionListener(this); Container contentPane=this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jlblDraw,Bor
25、derLayout.CENTER); contentPane.add(jbtnDraw,BorderLayout.SOUTH); } //按鈕點擊事件響應方法 public void actionPerformed(ActionEvent e){ //創(chuàng)建標簽的Graphics上下文環(huán)境 Graphics g=jlblDraw.getGraphics();,Java繪圖基礎,//用黃色畫一填充橢圓 g
26、.setColor(Color.YELLOW); g.fillOval(50,10,200,130); //用藍色顯示當前顏色的字符串 g.setColor(Color.BLUE); g.drawString(g.getColor().toString(),65,75); //使按鈕變得不再可用 jbtnDraw.setEnabled(false); } public static void m
27、ain(String[] args){ Exa_10_2 app=new Exa_10_2("getGraphics() Method Usage"); app.setVisible(true); } },Java繪圖基礎,paintComponent(),用來繪制幾何圖形,渲染圖形文字。paintComponent()方法的原型定義如下:protected void paintCo
28、mponent(Graphics g);JComponent類的paintComponent()方法與Component類的paint()具有完全相同的參數(shù)形式,兩種方法的功能與使用也基本類似。,JComponent類與paintComponent()方法,Java繪圖基礎,Swing應用中,經常會在JPanel組件中繪制圖形。通常的做法是:定義一個JPanel類的子類,在該子類中覆蓋/重寫類的paintComponent()方法
29、,在方法體內放入繪圖的操作語句。然后再將該JPanel組件添加到主窗口的內容窗格(ContentPane)內。 具體的實現(xiàn)結構類似于如下的代碼: class drawPanel extends Jpanel{ public void paintComponent(Graphics g) { // super.paintComponent(g);…… //相關的圖形或文字繪制語句 } },字體設置,一個F
30、ont類的對象表示了一種字體顯示效果,包括字體類型、Font MyFont = new Font ( ″TimesRoman″, Font.BOLD, 12 ); MyFont對應的是12磅TimesRoman類型的黑體字,其中指定字型時要用到Font類三個常量:Font.PLAIN, Font.BOLD, Font.ITALIC。如果希望使用該Font對象,則可以利用Graphics類的setFont( )方法: g. s
31、etFont ( MyFont );如果希望指定控制組件,如按鈕或文本框中的字體效果,則可以使用控制組件的方法setFont( )。如設btn是一個按鈕對象,則語句: btn.setFont(MyFont);另外,與setFont( )方法相對的getFont( )方法將返回當前Graphics或組件對象使用的字體。,Font類,字體設置,【例】獲取當前系統(tǒng)中所有可用字體的名稱,在標簽中顯示出這些可用字體的數(shù)目,在文本區(qū)中顯
32、示出這些可用字體的名稱。,字體設置,import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Exa_10_4 extends JFrame implements ActionListener{ //定義GUI所涉及的組件 JLabel jlblTotalFonts=new JLabel(); JButton jbtnDis
33、p=new JButton("顯示當前可用字體名稱"); JTextArea jtxtaFontNames=new JTextArea(); JScrollPane jsclpane4txtArea=new JScrollPane(jtxtaFontNames);,字體設置,public Exa_10_4(String title) { super(title); jbtnDisp.addA
34、ctionListener(this); //為標簽組件設置前景色為紅色 jlblTotalFonts.setForeground(new Color(255,0,0)); //設置文本區(qū)組件為不可編輯狀態(tài) jtxtaFontNames.setEditable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //添加
35、各個組件到窗口的內容窗格中 Container contentPane=this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jlblTotalFonts,BorderLayout.NORTH);,字體設置,contentPane.add(jsclpane4txtArea,BorderLayout.CEN
36、TER); contentPane.add(jbtnDisp,BorderLayout.SOUTH); this.setSize(300,300); this.setVisible(true); } //響應按鈕點擊事件 public void actionPerformed(ActionEvent e){ jbtnDisp.setEnabled(false); //使自己失效以免兩次被點擊
37、 String[] availableFontNames; //獲取當前平臺可用的字體集 GraphicsEnvironment ge=GraphicsEnvironment.,字體設置,getLocalGraphicsEnvironment(); availableFontNames=ge.getAvailableFontFamilyNames(); //當前平臺可用字體的總數(shù) int total=a
38、vailableFontNames.length; jlblTotalFonts.setText("當前平臺系統(tǒng)可用的字體總數(shù)為: ["+total+"]"); //將當前平臺可用字體名稱添加到文本區(qū)中 for (int k=0;k<total;k++) jtxtaFontNames.append(availableFontNames[k]+"\n&quo
39、t;); } public static void main(String[] args){ new Exa_10_4("Font Usage Demo"); }},字體設置,FontMetrics類定義了字體的規(guī)格對象,提供了比Font類更詳盡的特定字體的描述信息。這些信息可以通過調用FontMetrics類的相關方法來獲得。FontMetrics類提供了獲取文字樣式中各類規(guī)格信息的成員方法。
40、創(chuàng)建FontMetrics類對象要通過調用Graphics類的getFontMetrics()方法來實現(xiàn)。如:public void paint(Graphics g) {FontMetrics fm = g.getFontMetrics(); },FontMetrics類,字體設置,【例】編程實現(xiàn)演示FontMetrics類的字體規(guī)格信息。用一根粗黑線表示Baseline,另外三根分別表示字體的Leading、Ascent和D
41、escent的位置。窗口頂端包含輸入顯示文本內容的文本域及三個用來選擇字體名稱、字體樣式及字號的組合列表框。當在文本域中輸入新的內容并敲回車,或者改變了任何一個組合列表框的當前選擇,都會使字體規(guī)格信息的演示內容發(fā)生變化。,Graphics繪圖,利用Graphics類可繪制的圖形有直線、各種矩形、多邊形、圓和橢圓等。下面的例子綜合了這些方法。,Graphics類的繪圖方法,Graphics繪圖,import java.awt.*;imp
42、ort java.applet.Applet;public class DrawFigures extends Applet { public void paint ( Graphics g) { g.drawLine(30,5,40,5); //畫直線 g.drawRect(40,10,50,20);//畫矩形框(左上角x坐標, y坐標,x軸尺寸,y軸尺寸) g.fillRect(60,30,
43、70,40); //畫實心矩形 g.drawRoundRect(110,10,130,50,30,30); //畫圓角矩形框 g.drawOval(150,120,70,40); //畫橢圓形框(左上角x坐標,左上角y坐標,x軸尺 寸,y軸尺寸),若x 軸尺寸與y軸尺寸相等,則畫出圓形 g.fillOval(190,160,70,40); //畫實心橢圓,Graphics繪圖,g.drawOval(90,
44、100,50,40); //畫橢圓框 g.fillOval(130,100,50,40); //畫實心橢圓 drawMyPolygon(g); //自定義的畫多邊形的方法 g.drawString(″They are figures!″,100,220); } public void drawMyPolygon( Graphics g) { int[] xCoords = {
45、30,50,65,119,127}; //保存多邊形各點x坐標的數(shù)組 int[] yCoords = {100, 140,127,169,201}; //保存多邊形各點y坐標數(shù)組 g.drawPolygon( xCoords,yCoords,5); //畫自由多邊形框 } },Graphics繪圖,要在Java程序圖形界面的容器中繪制圖形,首先,需要明確希望繪制的圖形是什么,是圓、橢圓,還是直線,這由所選定
46、的方法來確定;其次,需要指明所繪制圖形或文字的大小和位置,,Graphics繪圖,繪制直線的方法格式為: drawline(int x1, int y1, int x2, int y2)。其中整型參數(shù)對( x1,y1)代表直線的起點,( x2,y2)代表直線的終點。,基本圖形繪制,點(Point),直線(Line),Graphics繪圖,【1】普通矩形◆線條方式
47、:drawRect( (int x,int y,int w,int h) ◆填充方式:fillRect( int x,int y,int w,int h) 【參數(shù)說明】①(x,y)為矩形的左上角坐標;②w為矩形的寬度;③h為矩形的高度。drawRect()和fillRect()方法的唯一不同之處在于:fillRect()方法畫出矩形框后用前景色將其填充。,矩形(Rectangle),Graphics類中提供了三種矩形類型。這
48、三類矩形都包括線條 方式與填充方式兩類繪圖方法。,Graphics繪圖,【2】圓角矩形◆線條方式:drawRoundRect(int x,int y,int w,int h, int arcWidth,int arcHeight)◆填充方式:fillRoundRect(int x,int y,int w,int h, int arcWidth,int arcHeight)【參數(shù)說明】圓角性質參數(shù)arcWidth與arcHeig
49、ht,分別代表了圓角弧對應橢圓的的長軸(水平軸)與短軸(垂直軸)。圓角矩形的圓角性質參數(shù)的意義見圖10.12。當arcWidth=w且arcHeight=h時,圓角矩形就成為一個橢圓。因此可用繪制圓角矩形的方法生成橢圓。,Graphics繪圖,【3】立體矩形◆線條方式:draw3DRect(int x,int y,int w,int h,boolean raised)◆填充方式:fill3DRect(int x,int y,in
50、t w,int h,boolean raised) 【參數(shù)說明】布爾型的raised參數(shù)用來控制立體矩形的凸出或凹入效果。raised為true時,畫出的立體矩形是凸起的;raised為false時,畫出的立體矩形是凹陷的。,Graphics繪圖,橢圓繪制方法與普通矩形的方法在形式上相同的,這是因為橢圓的規(guī)格大小是用它的外接矩形來指定的?!艟€條方式:drawOval(int x ,int y ,int w ,int h)◆填充方
51、式:fillOval(int x ,int y ,int w ,int h)【參數(shù)說明】①x、y參數(shù)代表橢圓外接矩形的左上角位置坐標。②參數(shù)w、h代表橢圓外接矩形的寬度和高度。,橢圓(Oval),Graphics繪圖,圓弧是橢圓的一部分,夾在兩個角之間,因此畫圓弧的方法比畫橢圓的方法多了兩個角度參數(shù)(都以角度為單位):起始角和張角。起始角確定了圓弧的起始位置,張角確定了圓弧的大小。張角可正可負,當取正值時,畫出的為沿逆時針方向的
52、圓弧;取負值時,畫出的為沿順時針方向的圓弧。當張角取值大于360時,畫出的就是橢圓。,圓弧(Arc),Graphics繪圖,drawArc()方法畫出的是一段圓弧,而fillArc()方法畫出的是一個扇形?!艟€條方式:drawArc(int x ,int y ,int w ,int h ,int startAngle ,int arcAngle)◆填充方式:fillArc(int x ,int y ,int w,int h ,int
53、 startAngle ,int arcAngle)【參數(shù)說明】①前四個參數(shù)x、y、w和h規(guī)定了圓弧所對應橢圓的規(guī)格大小。②startAngle表示圓弧的起始角。③arcAngle表示圓弧的張角,可取正負整數(shù)值代表有方向的角度。,Graphics繪圖,線條方式畫出的多邊形一般是不封閉的,除非首頂點與尾頂點坐標值一樣。但填充方式畫出的填充多邊形則為封閉的多邊形,因為填充不應該溢出多邊形的有效范圍。 根據(jù)繪制所采用的數(shù)據(jù)表達方式
54、的不同,多邊形的繪制方法可分為兩組,每一組又具有線條與填充兩種繪制方式。,多邊形(Polygon),Graphics繪圖,第一組:用坐標數(shù)組作為多邊形的頂點序列繪制多邊形:◆線條方式:drawPolygon(int[] xPoints,int[] yPPoints,int nPoints) ◆填充方式:fillPolygon(int[] xPts,int[] yPts,int n)【參數(shù)說明】①xPoints與yPPoints為
55、兩個數(shù)組,分別保存多邊形多個頂點的X坐標值與Y坐標值。兩個數(shù)組的長度應該相等②nPoints表示多邊形頂點的個數(shù),其值不能超過兩個數(shù)組的長度。多邊形繪制方法將兩個數(shù)組對應的頂點按順序用直線連接起來,組成一個多邊形,多邊形的頂點坐標序列為:(xPoints[0],yPPoints[0]),(xPoints[1],yPPoints[1])……(xPoints[n],yPPoints[n])。,Graphics繪圖,第二組:用Polygo
56、n對象作為數(shù)據(jù)源繪制多邊形:◆線條方式:drawPolygon(Polygon p)◆填充方式:fillPolygon(Polygon p)【參數(shù)說明】參數(shù)p為Polygon對象。Polygon類是java.awt包內提供的工具類,該類封裝了一個封閉區(qū)域的節(jié)點坐標序列。該類具有以下構造方法:Polygon(),創(chuàng)建一個空的多邊形對象。Polygon(int[] xpoints, int[] ypoints, int npoi
57、nts),創(chuàng)建以指定參數(shù)為初始化值的多邊形對象。其參數(shù)意義與drawPolygon()方法相同。 Polygon類具有addPoint(int x, int y)成員方法,用來將一個指定點的坐標添加到多邊形對象中。,畫布Canvas,Canvas是java.awt包中用來繪圖的矩形組件,其作用類似于Windows的畫圖板,用戶可在這塊區(qū)域上直接畫出圖形。Canvas繼承自Component類,具有Paint(Graphics g)、u
58、pdate(Graphics g)及repaint()方法,能夠響應鼠標和鍵盤事件,并具有自己的坐標系統(tǒng)。畫布提供了一塊專門的圖形區(qū)域,通過設定自己的邊界而和其它組件區(qū)分開,以保護畫面不被覆蓋。即使畫面被破壞,仍可通過調用Canvas的paint()方法重畫圖形,恢復原有的狀態(tài)。Canvas類的構造方法有兩種形式: ⑴無參構造方法Canvas(),用來創(chuàng)建一個新的畫布對象。⑵有參構造方法Canvas(GraphicsConfig
59、uration config),創(chuàng)建一個適用于指定的繪圖配置對象的的畫布對象。,畫布Canvas,如Canvas canvas1=new Canvas();語句就創(chuàng)建了一個空白的畫布對象。創(chuàng)建了Canvas對象后,還要調用setSize()方法設定這個畫布的大小。 Canvas類的重要方法包括:⑴paint(Graphics g),用來在畫布上繪制圖形。⑵void update(Graphics g),用來更新畫布。用戶無法直
60、接使用Canvas的paint()方法,使用時需要先定義一個以Canvas為基類的子類,并在子類中重寫paint()方法;然后在子類的paint()方法中,借助于方法的Graphics對象參數(shù),調用Graphics類的繪圖方法,實現(xiàn)用戶的繪圖操作。,畫布Canvas,【例】使用畫布實現(xiàn)以下功能:在畫布上沿一條水平直線,從左到右繪制一系列的圓,圓的半徑逐步增大,所有圓的圓心坐標在水平直線上。,畫布Canvas,import java.aw
61、t.*;import javax.swing.*;import java.awt.Color;//建立一個Canvas類的子類class MulOvalsCanvas extends Canvas{ private int oy; private int canvasWidth; //構造方法中設置畫布尺寸 public MulOvalsCanvas(){ this.setSize(450,250);
62、 oy=(this.getHeight()-30)/2; canvasWidth=this.getWidth(); },畫布Canvas,//重寫paint()方法 public void paint(Graphics g){ int ox=12; int r=10; //繪制水平直線 g.setColor(Color.RED); g.drawLine(0,oy,canvasWi
63、dth,oy); //沿水平直線繪制一系列的圓 g.setColor(Color.BLUE); //構造循環(huán)體 while ((ox+r)<(canvasWidth-15)){ g.drawOval(ox-r,oy-r,2*r,2*r); r+=5; ox+=15; } }},畫布Canvas,public class Exa_10_11 extends JFr
64、ame{ //建立一個JPanel子類的對象 MulOvalsCanvas multipleOvals=new MulOvalsCanvas(); public Exa_10_11(String title){ super(title); this.setSize(450,250); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Con
65、tainer contentPane=this.getContentPane(); contentPane.add(multipleOvals); this.setVisible(true); } public static void main(String[] args){Exa_10_11 app=new Exa_10_11("Canvas Usage Demo");}},Java圖
66、像處理,靜態(tài)圖像處理 常用的圖像文件格式有BMP、JPEG、GIF、PNG等格式。圖像的基本操作 Java中處理圖像的基本操作主要包括:創(chuàng)建圖像對象,獲取圖像資源,加載圖像,顯示圖像等。,Java圖像處理,java.awt的Component類提供了一個createImage()方法來生成Image圖像對象。CreateImage()方法有兩種重載形式:①Image createImage(Image
67、Producer producer);方法的第一種形式從一個指定的圖像產生器producer創(chuàng)建一幅圖像并由方法返回。producer是一個現(xiàn)實了ImageProducer接口的類對象。②Image createImage(int width, int height);方法的第二種形式創(chuàng)建并返回一幅具有指定寬度和高度的空白圖像。,創(chuàng)建圖像對象,Java圖像處理,⑴獲取本地圖像資源通過java.awt.Toolkit類的靜態(tài)方法g
68、etDefaultToolkit(),獲得當前默認的Toolkit(工具包)對象,然后再使用Toolkit類的getImage()方法,就可以從指定的文件中讀取GIF、JPEG或PNG格式的圖像數(shù)據(jù)了。例如:從本機上獲取名為myPhoto.gif的文件內容,并將文件中的圖像數(shù)據(jù)生成Image對象myPhoto的語句序列為:String fileName = “myPhoto.gif”;Image myPhoto = olkit.g
69、etDefaultToolkit().getImage(fileName);,獲取圖像資源,Java圖像處理,⑵獲取網(wǎng)絡圖像資源如果要獲取的圖像資源在網(wǎng)絡上,則需要使用URL類來得到圖像。Applet類提供了getCodeBase()方法,用以返回一個URL對象,該URL對象代表了applet小程序在網(wǎng)絡上地址。通常的做法為:用網(wǎng)絡地址與圖像文件名組成的字符串生成一個URL對象,然后使用Toolkit類的getImage()方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖形圖像處理matlab
- 圖形圖像處理圖像分割
- 單元七圖形圖像處理
- ps圖形圖像處理教案
- ps圖形圖像處理教案
- 多媒體課件圖形圖像處理
- 圖形圖像處理教學大綱
- 圖形圖像處理課程設計報告
- 圖形圖像處理的梯度場算法.pdf
- 任務3(新)photoshop 圖形圖像處理技術
- 地質系 《圖形圖像處理》 教學大綱
- 圖形圖像處理綜合課程設計題目
- 任務photoshop 圖形圖像處理技術5(新)
- 第八章圖形圖像處理
- photoshopcs圖形圖像處理理論教學大綱
- 任務4photoshop 圖形圖像處理技術(新)
- photoshopcs4圖形圖像處理教程復習資料
- 基于生物視覺模型的圖形圖像處理方法.pdf
- 《photoshop圖形圖像處理》課程教學改革方案
- photoshopcs4圖形圖像處理教程復習資料
評論
0/150
提交評論