介紹
java.awt 類 Graphics
java.lang.Object java.awt.Graphics
java.lang.Object java.awt.Graphics直接已知子類: DebugGraphics,Graphics2D
屬性
(1) 要在其上繪製的 Component 對象。
(2) 呈現和剪貼坐標的轉換原點。
(3) 當前剪貼區。
(4) 當前顏色。
(5) 當前字型。
(6) 當前的邏輯像素操作函式(XOR 或 Paint)。
(7) 當前 XOR 交替顏色(參見 setXORMode(java.awt.Color)。
坐標是無限細分的,並且位於輸出設備的像素之間。繪製圖形輪廓的操作是通過使用像素大小的畫筆遍歷像素間無限細分路徑的操作,畫筆從路徑上的錨點向下和向右繪製。填充圖形的操作是填充圖形內部區域無限細分路徑操作。呈現水平文本的操作是呈現字元字形完全位於基線坐標之上的上升部分。
圖形畫筆從要遍歷的路徑向下和向右繪製。
含義
(1) 如果繪製一個覆蓋給定矩形的圖形,那么該圖形與填充被相同矩形所限定的圖形相比,在右側和底邊多占用一行像素。
(2) 如果沿著與一行文本基線相同的 y坐標繪製一條水平線,那么除了文字的所有下降部分外,該線完全畫在文本的下面。
所有作為此 Graphics 對象方法的參數而出現的坐標,都是相對於調用該方法前的此 Graphics 對象轉換原點的。 所有呈現操作僅修改當前剪貼區所限定區域內的像素,此剪貼區是由用戶空間中的 Shape指定的,並且通過使用 Graphics 對象的程式來控制。此 用戶剪貼區被轉換到設備空間中,並且與 設備剪貼區組合,後者是通過視窗可見性和設備範圍定義的。用戶剪貼區和設備剪貼區的組合定義了 複合剪貼區,它確定了最終的剪貼區域。用戶剪貼區不能由呈現系統修改,以反映得到的複合剪貼區。用戶剪貼區只能通過 setClip 或 clipRect 方法更改。所有的繪製或寫入都以當前的顏色、當前繪圖模式和當前字型完成的。
摘要
protected Graphics()構造一個新的 Graphics 對象。此構造方法是用於圖形上下文的默認構造方法。
因為 Graphics 是一個抽象類,所以應用程式不能直接調用此構造方法。圖形上下文從其他圖形上下文獲取,或者通過在組件上調用 getGraphics 來創建。
方法摘要
abstract void | clearRect(int x, int y, int width, int height) 通過使用當前繪圖表面的背景色進行填充來清除指定的矩形。 |
abstract void | clipRect(int x, int y, int width, int height) 將當前剪貼區與指定的矩形相交。 |
abstract void | copyArea(int x, int y, int width, int height, int dx, int dy) 將組件的區域複製到由 dx 和 dy 指定的距離處。 |
abstractGraphics | create() 創建一個新的 Graphics 對象,它是此 Graphics 對象的副本。 |
Graphics | create(int x, int y, int width, int height) 基於此 Graphics 對象創建一個新的 Graphics 對象,但是使用新的轉換和剪貼區域。 |
abstract void | dispose() 釋放此圖形的上下文並釋放它所使用的所有系統資源。 |
void | draw3DRect(int x, int y, int width, int height, boolean raised) 繪製指定矩形的 3-D 突出顯示框線。 |
abstract void | drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) 繪製一個覆蓋指定矩形的圓弧或橢圓弧框線。 |
void | drawBytes(byte[] data, int offset, int length, int x, int y) 使用此圖形上下文的當前字型和顏色繪製由指定的 byte 數組給定的文本。 |
void | drawChars(char[] data, int offset, int length, int x, int y) 使用此圖形上下文的當前字型和顏色繪製由指定字元數組給定的文本。 |
abstract boolean | drawImage(Imageimg, int x, int y,Colorbgcolor,ImageObserverobserver) 繪製指定圖像中當前可用的圖像。 |
abstract boolean | ImageObserverobserver) 繪製指定圖像中當前可用的圖像。 |
abstract boolean | int width, int height,Colorbgcolor,ImageObserverobserver) 繪製指定圖像中已縮放到適合指定矩形內部的圖像。 |
abstract boolean | ImageObserverobserver) 繪製指定圖像中已縮放到適合指定矩形內部的圖像。 |
abstract boolean | drawImage(Imageimg, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,Colorbgcolor,ImageObserverobserver) 繪製當前可用的指定圖像的指定區域,動態地縮放圖像使其符合目標繪製表面的指定區域。 |
abstract boolean | ImageObserverobserver) |
abstract void | drawLine(int x1, int y1, int x2, int y2) 在此圖形上下文的坐標系統中,使用當前顏色在點 (x1, y1) 和 (x2, y2) 之間畫一條線。 |
abstract void | drawOval(int x, int y, int width, int height) 繪製橢圓的框線。 |
abstract void | drawPolygon(int[] xPoints, int[] yPoints, int nPoints) 繪製一個由 x和 y坐標數組定義的閉合多邊形。 |
void | drawPolygon(Polygonp) 繪製由指定的 Polygon 對象定義的多邊形框線。 |
abstract void | drawPolyline(int[] xPoints, int[] yPoints, int nPoints) 繪製由 x和 y坐標數組定義的一系列連線線。 |
void | drawRect(int x, int y, int width, int height) 繪製指定矩形的框線。 |
abstract void | drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 用此圖形上下文的當前顏色繪製圓角矩形的框線。 |
abstract void | drawString(AttributedCharacterIteratoriterator, int x, int y) 使用此圖形上下文的當前顏色繪製由指定疊代器給定的文本。 |
abstract void | drawString(Stringstr, int x, int y) 使用此圖形上下文的當前字型和顏色繪製由指定 string 給定的文本。 |
void | fill3DRect(int x, int y, int width, int height, boolean raised) 繪製一個用當前顏色填充的 3-D 突出顯示矩形。 |
abstract void | fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) 填充覆蓋指定矩形的圓弧或橢圓弧。 |
abstract void | fillOval(int x, int y, int width, int height) 使用當前顏色填充外接指定矩形框的橢圓。 |
abstract void | fillPolygon(int[] xPoints, int[] yPoints, int nPoints) 填充由 x和 y坐標數組定義的閉合多邊形。 |
void | fillPolygon(Polygonp) 用圖形上下文的當前顏色填充由指定的 Polygon 對象定義的多邊形。 |
abstract void | fillRect(int x, int y, int width, int height) 填充指定的矩形。 |
abstract void | fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) 用當前顏色填充指定的圓角矩形。 |
void | finalize() 一旦不再引用此圖形上下文就釋放它。 |
abstractShape | getClip() 獲取當前的剪貼區域。 |
abstractRectangle | getClipBounds() 返回當前剪貼區域的邊界矩形。 |
Rectangle | getClipBounds(Rectangler) 返回當前剪貼區域的邊界矩形。 |
Rectangle | getClipRect() 已過時。 從 JDK version 1.1 開始,由 getClipBounds() 取代。 |
abstractColor | getColor() 獲取此圖形上下文的當前顏色。 |
abstractFont | getFont() 獲取當前字型。 |
FontMetrics | getFontMetrics() 獲取當前字型的字型規格。 |
abstractFontMetrics | getFontMetrics(Fontf) 獲取指定字型的字型規格。 |
boolean | hitClip(int x, int y, int width, int height) 如果指定的矩形區域與當前的剪貼區域相交,則返回 true。 |
abstract void | setClip(int x, int y, int width, int height) 將當前的剪貼區設定為由給定坐標指定的矩形。 |
abstract void | setClip(Shapeclip) 將當前的剪貼區域設定為任意的剪貼形狀。 |
abstract void | setColor(Colorc) 將此圖形上下文的當前顏色設定為指定顏色。 |
abstract void | setFont(Fontfont) 將此圖形上下文的字型設定為指定字型。 |
abstract void | setPaintMode() 設定將此圖形上下文的繪圖模式,以便通過此圖形上下文中的當前顏色來改寫目標。 |
abstract void | setXORMode(Colorc1) 將此圖形下文的繪圖模式設定為在此圖形上下文的當前顏色和新的指定顏色之間交替。 |
String | toString() 返回表示此 Graphics 對象值的 String 對象。 |
abstract void | translate(int x, int y) 將圖形上下文的原點平移到當前坐標系統中的點 ( x, y)。 |
C#
方法
命名空間:System.Drawing
程式集:System.Drawing(在system.drawing.dll 中)
封裝一個GDI+繪圖圖面。無法繼承此類。
用法
public sealed class Graphics : MarshalByRefObject, IDeviceContext, IDisposable
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);//畫筆System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);//畫刷System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillEllipse(myBrush, newRectangle(0,0,100,200));//畫實心橢圓
formGraphics.DrawEllipse(myPen, new Rectangle(0,0,100,200));//空心圓
formGraphics.FillRectangle(myBrush, new Rectangle(0,0,100,200));//畫實心方
formGraphics.DrawRectangle(myPen, new Rectangle(0,0,100,200));//空心矩形
formGraphics.DrawLine(myPen, 0, 0, 200, 200);//畫線
formGraphics.DrawPie(myPen,90,80,140,40,120,100); //畫餡餅圖形//畫多邊形
formGraphics.DrawPolygon(myPen,new Point[]{ new Point(30,140), new Point(270,250), new Point(110,240), new Point (200,170), new Point(70,350), new Point(50,200)}); //清理使用的資源myPen.Dispose(); myBrush.Dispose(); formGraphics.Dispose();
使用Graphics對象繪製線條和形狀、呈現文本或顯示與操作圖像,所用到的屬性和方法如表所示。
as3 繪圖類Graphics
Flash中的繪圖是通過Graphics類實現的,Graphics類直接繼承Object類,有兩種繪圖方法,一是定義繪圖樣式的方法;一種是用於繪製和清除圖形的方法。
Graphics類有關樣式的方法包括線條樣式和填充樣式兩類。如下表:
Graphics類的繪圖樣式方法
方法名 | 說明 |
lineStyle | 定義線條樣式 |
lineGradientStyle | 定義漸變線條樣式 |
beginFill | 定義固體填充樣式 |
beginGradientFill | 定義漸變填充樣式 |
beginBitmapFill | 定義點陣圖填充 |
endFill | 結束填充方法 |
Graphics類的繪製圖形方法
方法名 | 說明 |
moveTo | 定義繪製線條的起點 |
lineTo | 定義繪製線條的終點 |
curveTo | 繪製曲線 |
drawCircle | 繪製圓形 |
drawEllipse | 繪製橢圓 |
drawRect | 繪製矩形 |
drawRoundRect | 繪製圓角矩形 |
Clear | 清除繪圖 |
Graphics類不允許用戶來創建實例,要使用Graphics類的方法,要藉助於Shape類和Sprite類的實例,這些實例具有graphics屬性,graphics屬性是Graphics類的實例,通過graphics屬性就可以調用繪圖的方法。
顯示實例名. graphics.lineStyle()
我們經常使用Shape類來繪製圖形,因為Shape類只有graphics屬性和構造方法,所以使用Shape類來繪製圖形的效率會更高。當需要圖形的互動功能時,可以考慮使用Sprite類和MovieClip類。
繪製曲線可以使用curveTo()方法,curveTo()方法帶有4個參數,即controlx,controly,anchorx,anchory。其中,controlx和controly是控制點的坐標,anchorx和anchory是終點坐標,起點坐標可由moveTo方法指定。用curveTo()方法的關鍵是控制點的確定,控制點相當於曲線起始點和終點切線的交點。
繪製填充圖形只需了解繪圖方法的參數。在填充繪圖時,如果填充結束時,需要調用endFill方法表示結束填充。除了使用純色填充外,還可以使用漸變填充和點陣圖填充。