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
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 booleanImageObserverobserver)
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
graphics
封裝一個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方法表示結束填充。除了使用純色填充外,還可以使用漸變填充和點陣圖填充。