graphics
所有圖形上下文的抽象基類
public abstract class Graphicsextends Object Graphics 類是所有圖形上下文的抽象基類,允許應用程序可 以在組件(已經在各種設備上實現),以及閉屏圖像上,進行繪製。 Graphics 對象封裝了 Java 支持的基本呈現操作所需的狀態信息。
java.awt 類 Graphics
java.lang.Objectjava.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
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)。 |
命名空間:System.Drawing
程序集:System.Drawing(在system.drawing.dll 中)
graphics
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方法表示結束填充。除了使用純色填充外,還可以使用漸變填充和點陣圖填充。