|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.Graphics java.awt.Graphics2D
public abstract class Graphics2D
此 Graphics2D
類別擴展 Graphics
類別,以提供對幾何形狀、坐標轉換、顏色管理和文本佈局更為複雜的控制。它是用於在 Java(tm) 平臺上呈現二維形狀、文本和圖像的基礎類別。
Graphics2D
物件的坐標都在一個與設備無關並且名為使用者空間的坐標系中指定,使用者空間由應用程序使用。Graphics2D
物件包含一個 AffineTransform
物件作為其呈現狀態的一部分,後者定義了如何將坐標從使用者空間轉換到設備空間中與設備有關的坐標。
設備空間中的坐標通常是指單個設備像素,並根據這些像素之間無限小的間距對齊。某些 Graphics2D
物件可用於捕獲對存儲器的呈現操作並存入圖形元檔案,以後可在未知物理分辨率的具體設備上重放。由於在捕獲呈現操作時分辨率可能未知,所以 Graphics2D
Transform
的設置可將使用者坐標轉換為虛擬設備空間,該設備空間與目標設備的預期分辨率接近。如果估計值不正確,則在重放時可能需要進一步轉換。
某些由呈現屬性物件執行的操作發生在設備空間中,但所有 Graphics2D
方法都採用使用者空間坐標。
每個 Graphics2D
物件都與一個定義呈現位置的目標關聯。GraphicsConfiguration
物件定義呈現目標的特徵,如像素格式和分辨率。在 Graphics2D
物件的整個生命週期中都使用相同的呈現目標。
創建 Graphics2D
物件時,GraphicsConfiguration
將為 Graphics2D
的目標(Component
或 Image
)指定預設轉換,此預設轉換將使用者空間坐標系映射到螢幕和印表機設備坐標,使原點映射到設備目標區域的左上角,並將 X 坐標軸向右方延伸,將 Y 坐標軸向下方延伸。對於接近 72 dpi 的設備(例如螢幕設備),預設轉換的縮放比例設置為 1:1。對於高分辨率設備(例如印表機),預設轉換的縮放比例設置為每平方英吋大約 72 個使用者空間坐標。對於圖像緩衝區,預設轉換為 Identity
轉換。
Graphics2D
呈現屬性控制。呈現器可以優化當中的許多步驟:可以快取記憶體結果以用於未來調用;可以將多個虛擬步驟合成一個操作;可以將多種屬性識別為共用的簡單情況(可以通過修改操作的其他部分來消除各種屬性間的差別)。
呈現過程中的步驟有:
Clip
。
Clip
由使用者空間中的 Shape
指定,由使用 Graphics
和 Graphics2D
中各種 clip 操作方法的程序控制。此使用者剪貼區 由當前 Transform
轉換到設備空間中,並與設備剪貼區 合併,後者是通過視窗可見性和設備範圍定義的。使用者剪貼區和設備剪貼區的組合定義復合剪貼區,復合剪貼區確定最終的剪貼區域。呈現系統不能修改使用者剪貼區來反映得到的復合剪貼區。
Graphics2D
上下文中當前的 Composite
屬性將顏色應用於目標繪圖面。
Shape
操作
draw(Shape)
操作,則 Graphics2D
上下文中當前 Stroke
屬性上的 createStrokedShape
方法將用於建構包含指定 Shape
輪廓的新 Shape
物件。
Graphics2D
上下文中的當前 Transform
將 Shape
從使用者空間轉換到設備空間。
Shape
的輪廓是通過使用 Shape
的 getPathIterator
方法提取的,該方法返回一個沿著 Shape
邊界迭代得到的 PathIterator
物件。
Graphics2D
物件無法處理 PathIterator
物件返回的曲線段,則可以調用 Shape
的 getPathIterator
替代方法,該方法可使 Shape
變得平滑。
PaintContext
,需要 Graphics2D
上下文中的當前 Paint
,它指定了在設備空間中呈現的顏色。
String
所需的字形集:
String
,則要求 Graphics2D
上下文中的當前 Font
將 String
中的 Unicode 字元轉換為一個字形集,以表現 Font 實作的基本佈局和成形演算法。
AttributedCharacterIterator
,則要求迭代器使用其內嵌的字體屬性將其自身轉換為 TextLayout
。TextLayout
實作更為複雜的字形佈局演算法,用於為不同書寫方向的多種字體自動執行 Unicode 雙方向佈局調整。
GlyphVector
,則 GlyphVector
物件已經包含了特定於字體的合適字形程式碼和每個字形位置的顯式坐標。
Font
以獲取指定字形的輪廓。這些輪廓被視為使用者空間中相對於步驟 1 中確定的每個字形位置的形狀。
Shape
操作下指示的方式填充。
PaintContext
以獲取 Paint
,Paint 指定了設備空間中呈現的顏色。
Image
操作
Image
的邊界框定義。此邊界框在圖像空間中指定,該空間即 Image
物件的本地坐標系。
AffineTransform
被傳遞到 drawImage(Image, AffineTransform, ImageObserver)
,則使用 AffineTransform
將邊界框從圖像空間轉換到使用者空間。如果未提供 AffineTransform
,則認為邊界框已存在於使用者空間中。
Transform
將 Image
的邊界框從使用者空間轉換到設備空間。注意,轉換邊界框的結果不一定會得到設備空間中的矩形區域。
Image
物件確定要呈現的顏色,並根據當前 Transform
和可選圖像轉換所指定的源到目標坐標映射關係進行採樣。
Graphics2D
呈現屬性的預設值有:
Paint
Component
的顏色。
Font
Component
的 Font
。
Stroke
Transform
Component
的 GraphicsConfiguration
的 getDefaultTransform
。
Composite
AlphaComposite.SRC_OVER
規則。
Clip
Clip
,輸出局限於 Component
。
Java 2D(tm)(Java(tm) 2 平臺)API 支持抗鋸齒呈現器。一像素寬的畫筆不需要完全落在像素 N 或像素 N+1 上。該畫筆可以部分落在這兩個像素上。不需要為寬畫筆選擇一個偏離方向,因為沿畫筆遍歷邊緣發生的混合可讓畫筆的子像素位置對使用者可見。另一方面,如果通過將 KEY_ANTIALIASING
提示鍵設置為 VALUE_ANTIALIAS_OFF
提示值而關閉了抗鋸齒,則當畫筆跨在像素邊界上時,呈現器可能需要應用偏離來確定要修改哪個像素,例如在設備空間中,當畫筆沿著整數坐標繪製時。雖然抗鋸齒呈現器的功能使之不再需要呈現模型為畫筆指定一個偏離,但對於在螢幕上繪製一像素寬的水平線和垂直線這種常見情形,還是需要抗鋸齒和非抗鋸齒呈現器執行類似的操作。為了確保通過將 KEY_ANTIALIASING
提示鍵設置為 VALUE_ANTIALIAS_ON
而打開的抗鋸齒不會導致這些線突然變為此寬度的二倍或一半不透明,需要讓該模型為這些線指定一個路徑,使它們完全覆寫特定的像素集,以說明提高其平滑性。
Java 2D API 維持與 JDK 1.1 呈現行為的相容性,遺留操作和現有呈現器行為在 Java 2D API 下沒有改變。定義了映射到常規 draw
和 fill
方法的遺留方法,它明確指示 Graphics2D
根據 Stroke
和 Transform
屬性以及呈現提示的設置擴展 Graphics
的方式。在預設屬性設置下該定義的執行方式完全相同。例如,預設 Stroke
是一個寬度為 1 且沒有虛線的 BasicStroke
,螢幕繪製的預設 Transform 是 Identity 轉換。
下面兩個規則提供了可預見的呈現行為(無論是否使用了重疊還是抗鋸齒)。
BasicStroke
物件勾畫的線和路徑可以“標準化”,從而在不同的可繪製點上定位時,無論使用重疊還是抗鋸齒呈現進行的繪製都能提供一致的輪廓呈現。此標準化過程通過 KEY_STROKE_CONTROL
提示控制。雖然未指定準確的標準化演算法,但此標準化的目標是為了確保可以使用一致的可視外觀呈現線條,而不考慮它們在像素網格上的位置;另一個目的是促進以抗鋸齒網要呈現更連續的水平和垂直線,從而與沒有抗鋸齒的線更為相似。典型的標準化步驟可以將抗鋸齒線端點提升到像素中心,以減少混合量;也可以調整無抗鋸齒線的子像素位置,以便浮點線寬度捨入為近似相等的偶數或奇數像素計數。此過程可以將端點向上移動半個像素(通常沿兩個坐標軸的正無窮大方向移動),以得到一致的結果。
在預設屬性設置下,以下定義的常規遺留方法與以前指定行為的執行方式完全相同:
fill
操作,包括 fillRect
、fillRoundRect
、fillOval
、fillArc
、fillPolygon
和 clearRect
,現在可以使用所需的 Shape
調用 fill
。例如,在填充矩形時可調用:
fill(new Rectangle(x, y, w, h));
drawLine
、drawRect
、drawRoundRect
、drawOval
、drawArc
、drawPolyline
和 drawPolygon
,現在可以使用所需的 Shape
調用 draw
。例如,在繪製矩形時可調用:
draw(new Rectangle(x, y, w, h));
draw3DRect
和 fill3DRect
方法是根據 Graphics
類別中的 drawLine
和 fillRect
方法實作的,根據 Graphics2D
上下文中的當前 Stroke
和 Paint
物件可以預知其行為。此類別覆寫了那些獨佔地使用當前 Color
的實作,覆寫當前 Paint
以及使用 fillRect
的 Paint
,以描述與以前存在的方法完全相同的行為,而不考慮當前 Stroke
的設置。
Graphics
類別僅定義了 setColor
方法來控制要繪製的顏色。由於 Java 2D API 擴展了 Color
物件來實作新的 Paint
介面,因此現有的 setColor
方法現在是將當前 Paint
屬性設置為 Color
物件的便捷方法。setColor(c)
等同於 setPaint(c)
。
Graphics
類別定義了兩種方法來控制如何將顏色應用到目標。
setPaintMode
方法實作為設置預設 Composite
的便捷方法,它等同於 setComposite(new AlphaComposite.SrcOver)
。
setXORMode(Color xorcolor)
方法實作為設置特殊 Composite
物件的便捷方法,它忽略源顏色的 Alpha
份量,並將目標顏色設置為以下值:
dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
RenderingHints
建構子摘要 | |
---|---|
protected |
Graphics2D()
建構一個新的 Graphics2D 物件。 |
方法摘要 | |
---|---|
abstract void |
addRenderingHints(Map<?,?> hints)
為呈現演算法設置任意數量的首選項值。 |
abstract void |
clip(Shape s)
將當前 Clip 與指定 Shape 的內部區域相交,並將 Clip 設置為所得的交集。 |
abstract void |
draw(Shape s)
使用當前 Graphics2D 上下文的設置勾畫 Shape 的輪廓。 |
void |
draw3DRect(int x,
int y,
int width,
int height,
boolean raised)
繪製指定矩形的 3-D 高亮顯示邊框。 |
abstract void |
drawGlyphVector(GlyphVector g,
float x,
float y)
使用 Graphics2D 上下文的呈現屬性,呈現指定 GlyphVector 的文本。 |
abstract void |
drawImage(BufferedImage img,
BufferedImageOp op,
int x,
int y)
呈現使用 BufferedImageOp 過濾的 BufferedImage 。 |
abstract boolean |
drawImage(Image img,
AffineTransform xform,
ImageObserver obs)
呈現一個圖像,在繪製前進行從圖像空間到使用者空間的轉換。 |
abstract void |
drawRenderableImage(RenderableImage img,
AffineTransform xform)
呈現 RenderableImage ,在繪製前進行從圖像空間到使用者空間的轉換。 |
abstract void |
drawRenderedImage(RenderedImage img,
AffineTransform xform)
呈現 RenderedImage ,在繪製前進行從圖像空間到使用者空間的轉換。 |
abstract void |
drawString(AttributedCharacterIterator iterator,
float x,
float y)
依照 TextAttribute 類別的規範應用指定迭代器的屬性,呈現指定迭代器的文本。 |
abstract void |
drawString(AttributedCharacterIterator iterator,
int x,
int y)
依照 TextAttribute 類別的規範應用指定迭代器的屬性,呈現指定迭代器的文本。 |
abstract void |
drawString(String str,
float x,
float y)
使用 Graphics2D 上下文中當前文本屬性狀態呈現由指定 String 指定的文本。 |
abstract void |
drawString(String str,
int x,
int y)
使用 Graphics2D 上下文中的當前文本屬性狀態呈現指定的 String 的文本。 |
abstract void |
fill(Shape s)
使用 Graphics2D 上下文的設置,填充 Shape 的內部區域。 |
void |
fill3DRect(int x,
int y,
int width,
int height,
boolean raised)
繪製一個用當前顏色填充的 3-D 高亮顯示矩形。 |
abstract Color |
getBackground()
返回用於清除區域的背景色。 |
abstract Composite |
getComposite()
返回 Graphics2D 上下文中的當前 Composite |
abstract GraphicsConfiguration |
getDeviceConfiguration()
返回與此 Graphics2D 關聯的設備配置。 |
abstract FontRenderContext |
getFontRenderContext()
獲取此 Graphics2D 上下文中 Font 的呈現上下文。 |
abstract Paint |
getPaint()
返回 Graphics2D 上下文中的當前 Paint |
abstract Object |
getRenderingHint(RenderingHints.Key hintKey)
返回呈現演算法的單個首選項的值。 |
abstract RenderingHints |
getRenderingHints()
獲取呈現演算法的首選項。 |
abstract Stroke |
getStroke()
返回 Graphics2D 上下文中的當前 Stroke |
abstract AffineTransform |
getTransform()
返回 Graphics2D 上下文中當前 Transform 的副本。 |
abstract boolean |
hit(Rectangle rect,
Shape s,
boolean onStroke)
檢查指定的 Shape 是否與設備空間中的指定 Rectangle 相交。 |
abstract void |
rotate(double theta)
將當前的 Graphics2D Transform 與旋轉轉換連接。 |
abstract void |
rotate(double theta,
double x,
double y)
將當前的 Graphics2D Transform 與平移後的旋轉轉換連接。 |
abstract void |
scale(double sx,
double sy)
將當前 Graphics2D Transform 與縮放轉換連接。 |
abstract void |
setBackground(Color color)
設置 Graphics2D 上下文的背景色。 |
abstract void |
setComposite(Composite comp)
為 Graphics2D 上下文設置 Composite 。 |
abstract void |
setPaint(Paint paint)
為 Graphics2D 上下文設置 Paint 屬性。 |
abstract void |
setRenderingHint(RenderingHints.Key hintKey,
Object hintValue)
為呈現演算法設置單個首選項的值。 |
abstract void |
setRenderingHints(Map<?,?> hints)
使用指定的 hints 替換用於所有呈現演算法首選項的值。 |
abstract void |
setStroke(Stroke s)
為 Graphics2D 上下文設置 Stroke |
abstract void |
setTransform(AffineTransform Tx)
覆寫 Graphics2D 上下文中的 Transform。 |
abstract void |
shear(double shx,
double shy)
將當前 Graphics2D Transform 與剪裁轉換連接。 |
abstract void |
transform(AffineTransform Tx)
根據“最後指定首先應用”規則,使用此 Graphics2D 中的 Transform 組合 AffineTransform 物件。 |
abstract void |
translate(double tx,
double ty)
將當前 Graphics2D Transform 與平移轉換連接。 |
abstract void |
translate(int x,
int y)
將 Graphics2D 上下文的原點平移到當前坐標系中的點 (x, y)。 |
從類別 java.awt.Graphics 繼承的方法 |
---|
clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
建構子詳細資訊 |
---|
protected Graphics2D()
Graphics2D
物件。由於 Graphics2D
是一個抽象類別,而且它必須由不同輸出設備的子類別定制,所以無法直接創建 Graphics2D
物件。相反,Graphics2D
物件必須從另一個 Graphics2D
物件獲得、由某個 Component
創建,或者從 BufferedImage
之類別的圖像物件獲得。
Component.getGraphics()
,
Graphics.create()
方法詳細資訊 |
---|
public void draw3DRect(int x, int y, int width, int height, boolean raised)
高亮顯示效果所用的顏色根據當前顏色確定。得到的矩形覆寫的區域為 width + 1
像素寬乘以 height + 1
像素高。此方法獨佔使用當前 Color
,並忽略當前 Paint
Graphics
中的 draw3DRect
x
- 要繪製矩形的 x 坐標。y
- 要繪製矩形的 y 坐標。width
- 要繪製矩形的寬度。height
- 要繪製矩形的高度。raised
- 一個用於確定矩形是凸出平面顯示還是凹入平面顯示的 boolean 值。Graphics.fill3DRect(int, int, int, int, boolean)
public void fill3DRect(int x, int y, int width, int height, boolean raised)
Color
確定。此方法獨佔使用當前 Color
,並忽略當前 Paint
Graphics
中的 fill3DRect
x
- 要填充矩形的 x 坐標。y
- 要填充矩形的 y 坐標。width
- 要填充矩形的寬度。height
- 要填充矩形的高度。raised
- 一個用於確定矩形是凸出平面顯示還是凹入平面顯示的 boolean 值。Graphics.draw3DRect(int, int, int, int, boolean)
public abstract void draw(Shape s)
Graphics2D
上下文的設置勾畫 Shape
的輪廓。應用的呈現屬性包括 Clip
、Transform
、Paint
、Composite
和 Stroke
屬性。
s
- 要呈現的 Shape
setStroke(java.awt.Stroke)
,
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
,
transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
,
setComposite(java.awt.Composite)
public abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs)
Graphics2D
中的當前 Transform
完成。在應用 Graphics2D
上下文中的 transform 屬性之前,指定的轉換被應用到圖像。應用的呈現屬性包括 Clip
、Transform
和 Composite
屬性。注意,如果指定的轉換不可逆,則不會完成呈現。
img
- 要呈現的指定圖像。如果 img
為 null,則此方法不執行任何動作。xform
- 從圖像空間到使用者空間的轉換obs
- 轉換了多個 Image
時要通知的 ImageObserver
Image
被完全載入並完全呈現,則為 true
,否則為 null;如果仍在載入 Image
,則為 false
transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
public abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
BufferedImageOp
過濾的 BufferedImage
。
應用的呈現屬性包括 Clip
、Transform
和 Composite
屬性。這等價於:
img1 = op.filter(img, null); drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
op
- 在呈現之前要應用到圖像的過濾器img
- 要呈現的指定 BufferedImage
。
如果 img
為 null,則此方法不執行任何動作。x
- 使用者空間中呈現該圖像左上角位置的 x 坐標y
- 使用者空間中呈現該圖像左上角位置的 y 坐標transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
RenderedImage
,在繪製前進行從圖像空間到使用者空間的轉換。從使用者空間到設備空間的轉換使用 Graphics2D
中的當前 Transform
完成。在應用 Graphics2D
上下文中的 transform 屬性之前,指定的轉換被應用到圖像。應用的呈現屬性包括 Clip
、Transform
和 Composite
屬性。注意,如果指定的轉換不可逆,則不會完成呈現。
img
- 要呈現的圖像。如果 img
為 null,則此方法不執行任何操作。xform
- 從圖像空間到使用者空間的轉換transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
public abstract void drawRenderableImage(RenderableImage img, AffineTransform xform)
RenderableImage
,在繪製前進行從圖像空間到使用者空間的轉換。從使用者空間到設備空間的轉換使用 Graphics2D
中當前的 Transform
完成。在應用 Graphics2D
上下文中的 transform 屬性之前,指定的轉換被應用到圖像。應用的呈現屬性包括 Clip
、Transform
和 Composite
屬性。注意,如果指定的轉換不可逆,則不會完成呈現。
呈現 RenderableImage
時,可以使用在 Graphics2D
物件上設置的呈現提示。如果由特定 RenderableImage
識別的特定提示需要顯式控制,或者需要知道使用哪一個提示,則應直接從 RenderableImage
獲取 RenderedImage
,並使用 drawRenderedImage
呈現它。
img
- 要呈現的圖像。如果 img
為 null,則此方法不執行任何操作。xform
- 從圖像空間到使用者空間的轉換transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
,
drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)
public abstract void drawString(String str, int x, int y)
Graphics2D
上下文中的當前文本屬性狀態呈現指定的 String
的文本。首字元的基線位於使用者空間的 (x, y) 位置處。應用的呈現屬性包括 Clip
、Transform
、Paint
、Font
和 Composite
屬性。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。
Graphics
中的 drawString
str
- 要呈現的字元串x
- 呈現 String
位置的 x 坐標y
- 呈現 String
位置的 y 坐標
NullPointerException
- 如果 str
為 null
Graphics.drawBytes(byte[], int, int, int, int)
,
Graphics.drawChars(char[], int, int, int, int)
public abstract void drawString(String str, float x, float y)
Graphics2D
上下文中當前文本屬性狀態呈現由指定 String
指定的文本。首字元的基線位於使用者空間中的 (x, y) 位置處。應用的呈現屬性包括 Clip
、Transform
、Paint
、Font
和 Composite
屬性。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。
str
- 要呈現的 String
x
- 呈現 String
位置的 x 坐標y
- 呈現 String
位置的 y 坐標
NullPointerException
- 如果 str
為 null
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
,
Graphics.setFont(java.awt.Font)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
Graphics.setClip(int, int, int, int)
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
TextAttribute
類別的規範應用指定迭代器的屬性,呈現指定迭代器的文本。
首字元的基線位於使用者空間中的 (x, y) 位置處。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。
Graphics
中的 drawString
iterator
- 要呈現其文本的迭代器x
- 要呈現迭代器文本處的 x 坐標y
- 要呈現迭代器文本處的 y 坐標
NullPointerException
- 如果 iterator
為 null
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
Graphics.setClip(int, int, int, int)
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
TextAttribute
類別的規範應用指定迭代器的屬性,呈現指定迭代器的文本。
首字元的基線位於使用者空間中的 (x, y) 位置處。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。
iterator
- 要呈現其文本的迭代器x
- 要呈現迭代器文本處的 x 坐標y
- 要呈現迭代器文本處的 y 坐標
NullPointerException
- 如果 iterator
為 null
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
Graphics.setClip(int, int, int, int)
public abstract void drawGlyphVector(GlyphVector g, float x, float y)
Graphics2D
上下文的呈現屬性,呈現指定 GlyphVector
的文本。應用的呈現屬性包括 Clip
、Transform
、Paint
和 Composite
屬性。GlyphVector
指定來自一個 Font
的各個字形。GlyphVector
還可以包含字形位置。這是將一組字元呈現到螢幕的最快方式。
g
- 要呈現的 GlyphVector
x
- 字形呈現使用者空間中的 x 位置y
- 字形呈現使用者空間中的 y 位置
NullPointerException
- 如果 g
為 null
。Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
,
GlyphVector
,
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
Graphics.setClip(int, int, int, int)
public abstract void fill(Shape s)
Graphics2D
上下文的設置,填充 Shape
的內部區域。應用的呈現屬性包括 Clip
、Transform
、Paint
和 Composite
屬性。
s
- 要填充的 Shape
setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
,
transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
setComposite(java.awt.Composite)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
Shape
是否與設備空間中的指定 Rectangle
相交。如果 onStroke
為 false,則此方法會檢查指定 Shape
的內部區域是否與指定的 Rectangle
相交。如果 onStroke
為 true
,則此方法會檢查指定 Shape
輪廓的 Stroke
是否與指定的 Rectangle
相交。可應用的呈現屬性包括 Clip
、Transform
和 Stroke
屬性。
rect
- 檢查設備空間中是否相交的區域s
- 檢查是否相交的 Shape
onStroke
- 用於在測試中選擇筆劃或填充圖形的標誌。如果該標誌為 true
,則測試 Stroke
輪廓。如果該標誌為 false
,則測試填充的 Shape
。
true
;否則返回 false
setStroke(java.awt.Stroke)
,
fill(java.awt.Shape)
,
draw(java.awt.Shape)
,
transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
,
clip(java.awt.Shape)
,
Graphics.setClip(int, int, int, int)
public abstract GraphicsConfiguration getDeviceConfiguration()
Graphics2D
關聯的設備配置。
Graphics2D
的設備配置。public abstract void setComposite(Composite comp)
Graphics2D
上下文設置 Composite
。
Composite
用於所有繪製方法中,如 drawImage
、drawString
、draw
和 fill
。
它指定新的像素如何在呈現過程中與圖形設備上的現有像素組合。
如果此 Graphics2D
上下文正在向顯示螢幕繪製 Component
,並且 Composite
是自定義物件,而不是 AlphaComposite
類別的實例,那麼如果有安全管理器,就可以使用 AWTPermission("readDisplayPixels")
權限調用其 checkPermission
方法。
comp
- 用於呈現的 Composite
物件
SecurityException
- 如果自定義的 Composite
物件被用於呈現到螢幕,並設置了安全管理器,且其 checkPermission
方法不允許該操作。Graphics.setXORMode(java.awt.Color)
,
Graphics.setPaintMode()
,
getComposite()
,
AlphaComposite
,
SecurityManager.checkPermission(java.security.Permission)
,
AWTPermission
public abstract void setPaint(Paint paint)
Graphics2D
上下文設置 Paint
屬性。使用為 null
的 Paint
物件調用此方法對此 Graphics2D
的當前 Paint
屬性沒有任何影響。
paint
- 呈現過程中用於產生顏色的 Paint
物件;或者為 null
Graphics.setColor(java.awt.Color)
,
getPaint()
,
GradientPaint
,
TexturePaint
public abstract void setStroke(Stroke s)
Graphics2D
上下文設置 Stroke
s
- 呈現過程中用於勾畫 Shape
的 Stroke
物件BasicStroke
,
getStroke()
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
RenderingHints
類別。
hintKey
- 要設置提示的鍵。hintValue
- 指示指定提示類別別首選項的值。getRenderingHint(RenderingHints.Key)
,
RenderingHints
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
RenderingHints
類別。
hintKey
- 與要獲得的提示對應的鍵。
RenderingHints
類別中定義。RenderingHints
,
setRenderingHint(RenderingHints.Key, Object)
public abstract void setRenderingHints(Map<?,?> hints)
hints
替換用於所有呈現演算法首選項的值。丟棄所有呈現提示的現有值,並從指定的 Map
物件初始化一組新的已知提示和值。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。有關常用鍵和值的定義,請參考 RenderingHints
類別。
hints
- 要設置的呈現提示getRenderingHints()
,
RenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
Map
物件中存在的呈現提示值。所有指定物件中不存在的其它首選項不做修改。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。有關常用鍵和值的定義,請參考 RenderingHints
類別。
hints
- 要設置的呈現提示RenderingHints
public abstract RenderingHints getRenderingHints()
RenderingHints
類別。
RenderingHints
實例的參考。RenderingHints
,
setRenderingHints(Map)
public abstract void translate(int x, int y)
Graphics2D
上下文的原點平移到當前坐標系中的點 (x, y)。修改 Graphics2D
上下文,使其新的原點對應於此 Graphics2D
上下文原坐標系中的點 (x, y)。在此圖形上下文上執行的後續呈現操作使用的所有坐標均相對於這個新原點。
Graphics
中的 translate
x
- 指定的 x 坐標y
- 指定的 y 坐標public abstract void translate(double tx, double ty)
Graphics2D
Transform
與平移轉換連接。後續呈現相對於前一位置平移指定的距離。這等同於調用 transform(T),其中 T 為以下矩陣表示的 AffineTransform
:
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- 沿 x 軸平移的距離ty
- 沿 y 軸平移的距離public abstract void rotate(double theta)
Graphics2D
Transform
與旋轉轉換連接。後續呈現相對於前一原點旋轉指定弧度。這等同於調用 transform(R)
,其中 R 為以下矩陣表示的 AffineTransform
:
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]使用正角度 theta 進行旋轉,可將正 x 軸上的點轉向正 y 軸。
theta
- 旋轉的角度,以弧度為單位public abstract void rotate(double theta, double x, double y)
Graphics2D
Transform
與平移後的旋轉轉換連接。後續呈現的變換如下:平移到指定位置,旋轉指定弧度,然後向回平移相同的距離。這等同於以下調用序列:
translate(x, y); rotate(theta); translate(-x, -y);使用正角度 theta 進行旋轉,可將正 x 軸上的點轉向正 y 軸。
theta
- 旋轉的角度,以弧度為單位x
- 旋轉原點的 x 坐標y
- 旋轉原點的 y 坐標public abstract void scale(double sx, double sy)
Graphics2D
Transform
與縮放轉換連接。後續呈現相對於以前的縮放比例根據指定的縮放係數來重新調整大小。這等同於調用 transform(S)
,其中 S 為以下矩陣表示的 AffineTransform
:
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- 相對於以前的呈現操作,後續呈現操作中的與 X 坐標相乘的量。sy
- 相對於以前的呈現操作,後續呈現操作中的與 Y 坐標相乘的量。public abstract void shear(double shx, double shy)
Graphics2D
Transform
與剪裁轉換連接。後續呈現相對於以前的位置由指定的乘式剪裁。這等同於調用 transform(SH)
,其中 SH 為以下矩陣表示的 AffineTransform
:
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- 在正 X 軸方向移動坐標的乘數,它可以作為其 Y 坐標的函數shy
- 在正 Y 軸方向移動坐標的乘數,它可以作為其 X 坐標的函數public abstract void transform(AffineTransform Tx)
Graphics2D
中的 Transform
組合 AffineTransform
物件。如果當前 Transform
為 Cx,那麼使用 Tx 進行組合的結果為新的 Transform
Cx'。Cx' 成為此 Graphics2D
的當前 Transform
。通過更新的 Transform
Cx' 轉換點 p 等同於首先通過 Tx 轉換點 p,然後通過原來的 Transform
Cx 轉換所得結果。換句話說,Cx'(p) = Cx(Tx(p))。如有必要,可以產生 Tx 的副本,從而對 Tx 進行進一步修改時不會影響呈現。
Tx
- 要與當前 Transform
組合的 AffineTransform
物件setTransform(java.awt.geom.AffineTransform)
,
AffineTransform
public abstract void setTransform(AffineTransform Tx)
Graphics2D
上下文中的 Transform。警告:切勿使用此方法在現有轉換之上應用新的坐標轉換,因為 Graphics2D
可能已經有用於其它用途(例如,呈現 Swing 元件或應用縮放轉換以調整印表機的分辨率)的轉換。
要添加坐標轉換,請使用 transform
、rotate
、scale
或 shear
方法。setTransform
方法只用於呈現後恢復原始 Graphics2D
的轉換,如以下範例所示:
// Get the current transform AffineTransform saveAT = g2.getTransform(); // Perform transformation g2d.transform(...); // Render g2d.draw(...); // Restore original transform g2d.setTransform(saveAT);
Tx
- 從 getTransform
方法檢索的 AffineTransform
transform(java.awt.geom.AffineTransform)
,
getTransform()
,
AffineTransform
public abstract AffineTransform getTransform()
Graphics2D
上下文中當前 Transform
的副本。
Graphics2D
上下文中的當前 AffineTransform
transform(java.awt.geom.AffineTransform)
,
setTransform(java.awt.geom.AffineTransform)
public abstract Paint getPaint()
Graphics2D
上下文中的當前 Paint
Graphics2D
Paint
,它定義一種顏色或網要。setPaint(java.awt.Paint)
,
Graphics.setColor(java.awt.Color)
public abstract Composite getComposite()
Graphics2D
上下文中的當前 Composite
Graphics2D
Composite
,它定義一種復合樣式。setComposite(java.awt.Composite)
public abstract void setBackground(Color color)
Graphics2D
上下文的背景色。背景色用於清除區域。當為 Component
建構 Graphics2D
時,可以從 Component
繼承背景色。設置 Graphics2D
上下文中的背景色僅影響後續 clearRect
調用,不影響該 Component
的背景色。要更改 Component
的背景,請使用該 Component
的相應方法。
color
- 在對 clearRect
的後續調用中所用的背景色getBackground()
,
Graphics.clearRect(int, int, int, int)
public abstract Color getBackground()
Graphics2D
Color
,它定義背景色。setBackground(java.awt.Color)
public abstract Stroke getStroke()
Graphics2D
上下文中的當前 Stroke
Graphics2D
Stroke
,它定義線條樣式。setStroke(java.awt.Stroke)
public abstract void clip(Shape s)
Clip
與指定 Shape
的內部區域相交,並將 Clip
設置為所得的交集。與當前 Clip
相交之前,使用當前 Graphics2D
Transform
轉換指定的 Shape
。
此方法用於使當前 Clip
變小。要使 Clip
變大,請使用 setClip
。
此方法修改的使用者剪貼區 獨立於與設備邊界和可視性關聯的剪切。如果以前沒有設置任何剪貼區,或者已經使用帶有 null
參數的 setClip
將剪貼區清除,那麼指定的 Shape
將成為新的使用者剪貼區。
s
- 要與當前 Clip
相交的 Shape
。如果 s
為 null
,則此方法會清除當前 Clip
。public abstract FontRenderContext getFontRenderContext()
Graphics2D
上下文中 Font
的呈現上下文。FontRenderContext
封裝應用程序提示,如抗鋸齒和小數規格,以及目標設備的特定資訊(如每英吋的點數)。當使用 Font
和 TextLayout
等物件執行印刷格式編排時,應用程序應提供此資訊。將各種呈現提示應用到文本呈現時,執行其自身佈局並且需要對字形(如前距和線高)的各種特徵進行精確測量的應用程序也應提供此資訊。
FontRenderContext
,
Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String)
,
TextLayout
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。