JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 Graphics2D

java.lang.Object
  繼承者 java.awt.Graphics
      繼承者 java.awt.Graphics2D

public abstract class Graphics2D
extends Graphics

Graphics2D 類別擴展 Graphics 類別,以提供對幾何形狀、坐標轉換、顏色管理和文本佈局更為複雜的控制。它是用於在 Java(tm) 平臺上呈現二維形狀、文本和圖像的基礎類別。

坐標空間

所有傳遞到 Graphics2D 物件的坐標都在一個與設備無關並且名為使用者空間的坐標系中指定,使用者空間由應用程序使用。Graphics2D 物件包含一個 AffineTransform 物件作為其呈現狀態的一部分,後者定義了如何將坐標從使用者空間轉換到設備空間中與設備有關的坐標。

設備空間中的坐標通常是指單個設備像素,並根據這些像素之間無限小的間距對齊。某些 Graphics2D 物件可用於捕獲對存儲器的呈現操作並存入圖形元檔案,以後可在未知物理分辨率的具體設備上重放。由於在捕獲呈現操作時分辨率可能未知,所以 Graphics2D Transform 的設置可將使用者坐標轉換為虛擬設備空間,該設備空間與目標設備的預期分辨率接近。如果估計值不正確,則在重放時可能需要進一步轉換。

某些由呈現屬性物件執行的操作發生在設備空間中,但所有 Graphics2D 方法都採用使用者空間坐標。

每個 Graphics2D 物件都與一個定義呈現位置的目標關聯。GraphicsConfiguration 物件定義呈現目標的特徵,如像素格式和分辨率。在 Graphics2D 物件的整個生命週期中都使用相同的呈現目標。

創建 Graphics2D 物件時,GraphicsConfiguration 將為 Graphics2D 的目標(ComponentImage)指定預設轉換,此預設轉換將使用者空間坐標系映射到螢幕和印表機設備坐標,使原點映射到設備目標區域的左上角,並將 X 坐標軸向右方延伸,將 Y 坐標軸向下方延伸。對於接近 72 dpi 的設備(例如螢幕設備),預設轉換的縮放比例設置為 1:1。對於高分辨率設備(例如印表機),預設轉換的縮放比例設置為每平方英吋大約 72 個使用者空間坐標。對於圖像緩衝區,預設轉換為 Identity 轉換。

呈現過程

呈現過程可以分為四個階段,這四個階段由 Graphics2D 呈現屬性控制。呈現器可以優化當中的許多步驟:可以快取記憶體結果以用於未來調用;可以將多個虛擬步驟合成一個操作;可以將多種屬性識別為共用的簡單情況(可以通過修改操作的其他部分來消除各種屬性間的差別)。

呈現過程中的步驟有:

  1. 確定呈現內容。
  2. 將呈現操作限制在當前 ClipClip 由使用者空間中的 Shape 指定,由使用 GraphicsGraphics2D 中各種 clip 操作方法的程序控制。此使用者剪貼區 由當前 Transform 轉換到設備空間中,並與設備剪貼區 合併,後者是通過視窗可見性和設備範圍定義的。使用者剪貼區和設備剪貼區的組合定義復合剪貼區,復合剪貼區確定最終的剪貼區域。呈現系統不能修改使用者剪貼區來反映得到的復合剪貼區。
  3. 確定呈現的顏色。
  4. 使用 Graphics2D 上下文中當前的 Composite 屬性將顏色應用於目標繪圖面。

三種型別的呈現操作,以及各自特殊呈現過程的細節如下:
  1. Shape 操作
    1. 如果該操作為 draw(Shape) 操作,則 Graphics2D 上下文中當前 Stroke 屬性上的 createStrokedShape 方法將用於建構包含指定 Shape 輪廓的新 Shape 物件。
    2. 使用 Graphics2D 上下文中的當前 TransformShape 從使用者空間轉換到設備空間。
    3. Shape 的輪廓是通過使用 ShapegetPathIterator 方法提取的,該方法返回一個沿著 Shape 邊界迭代得到的 PathIterator 物件。
    4. 如果 Graphics2D 物件無法處理 PathIterator 物件返回的曲線段,則可以調用 ShapegetPathIterator 替代方法,該方法可使 Shape 變得平滑。
    5. 對於 PaintContext,需要 Graphics2D 上下文中的當前 Paint,它指定了在設備空間中呈現的顏色。
  2. 文本操作
    1. 以下步驟用於確定呈現指定 String 所需的字形集:
      1. 如果參數是 String,則要求 Graphics2D 上下文中的當前 FontString 中的 Unicode 字元轉換為一個字形集,以表現 Font 實作的基本佈局和成形演算法。
      2. 如果參數是 AttributedCharacterIterator,則要求迭代器使用其內嵌的字體屬性將其自身轉換為 TextLayoutTextLayout 實作更為複雜的字形佈局演算法,用於為不同書寫方向的多種字體自動執行 Unicode 雙方向佈局調整。
      3. 如果參數是 GlyphVector,則 GlyphVector 物件已經包含了特定於字體的合適字形程式碼和每個字形位置的顯式坐標。
    2. 查詢當前的 Font 以獲取指定字形的輪廓。這些輪廓被視為使用者空間中相對於步驟 1 中確定的每個字形位置的形狀。
    3. 字元輪廓按上面 Shape 操作下指示的方式填充。
    4. 查詢當前 PaintContext 以獲取 Paint,Paint 指定了設備空間中呈現的顏色。
  3. Image 操作
    1. 感興趣區域由源 Image 的邊界框定義。此邊界框在圖像空間中指定,該空間即 Image 物件的本地坐標系。
    2. 如果 AffineTransform 被傳遞到 drawImage(Image, AffineTransform, ImageObserver),則使用 AffineTransform 將邊界框從圖像空間轉換到使用者空間。如果未提供 AffineTransform,則認為邊界框已存在於使用者空間中。
    3. 使用當前 TransformImage 的邊界框從使用者空間轉換到設備空間。注意,轉換邊界框的結果不一定會得到設備空間中的矩形區域。
    4. Image 物件確定要呈現的顏色,並根據當前 Transform 和可選圖像轉換所指定的源到目標坐標映射關係進行採樣。

預設呈現屬性

Graphics2D 呈現屬性的預設值有:
Paint
Component 的顏色。
Font
ComponentFont
Stroke
線寬為 1 的方形畫筆,沒有虛線、斜角線段接合和方形端點。
Transform
用於 ComponentGraphicsConfigurationgetDefaultTransform
Composite
AlphaComposite.SRC_OVER 規則。
Clip
不呈現 Clip,輸出局限於 Component

呈現相容性問題

JDK(tm) 1.1 呈現模型是基於像素化的模型,該模型的坐標無限細分,且位於像素之間。使用一個一像素寬的畫筆執行繪製操作,填充路徑錨點向下和向右的像素。JDK 1.1 呈現模型與大多數現有平臺呈現類別的功能一致,需要將整數坐標解析為離散的畫筆,使其完全落在指定的像素成員上。

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 下沒有改變。定義了映射到常規 drawfill 方法的遺留方法,它明確指示 Graphics2D 根據 StrokeTransform 屬性以及呈現提示的設置擴展 Graphics 的方式。在預設屬性設置下該定義的執行方式完全相同。例如,預設 Stroke 是一個寬度為 1 且沒有虛線的 BasicStroke,螢幕繪製的預設 Transform 是 Identity 轉換。

下面兩個規則提供了可預見的呈現行為(無論是否使用了重疊還是抗鋸齒)。

在預設屬性設置下,以下定義的常規遺留方法與以前指定行為的執行方式完全相同:

Graphics 類別僅定義了 setColor 方法來控制要繪製的顏色。由於 Java 2D API 擴展了 Color 物件來實作新的 Paint 介面,因此現有的 setColor 方法現在是將當前 Paint 屬性設置為 Color 物件的便捷方法。setColor(c) 等同於 setPaint(c)

Graphics 類別定義了兩種方法來控制如何將顏色應用到目標。

  1. setPaintMode 方法實作為設置預設 Composite 的便捷方法,它等同於 setComposite(new AlphaComposite.SrcOver)
  2. 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 上下文的原點平移到當前坐標系中的點 (xy)。
 
從類別 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
 

建構子詳細資訊

Graphics2D

protected Graphics2D()
建構一個新的 Graphics2D 物件。由於 Graphics2D 是一個抽象類別,而且它必須由不同輸出設備的子類別定制,所以無法直接創建 Graphics2D 物件。相反,Graphics2D 物件必須從另一個 Graphics2D 物件獲得、由某個 Component 創建,或者從 BufferedImage 之類別的圖像物件獲得。

另請參見:
Component.getGraphics(), Graphics.create()
方法詳細資訊

draw3DRect

public void draw3DRect(int x,
                       int y,
                       int width,
                       int height,
                       boolean raised)
繪製指定矩形的 3-D 高亮顯示邊框。矩形的邊是高亮顯示的,以至於從左上角看呈斜面並加亮。

高亮顯示效果所用的顏色根據當前顏色確定。得到的矩形覆寫的區域為 width + 1 像素寬乘以 height + 1 像素高。此方法獨佔使用當前 Color,並忽略當前 Paint

覆寫:
類別 Graphics 中的 draw3DRect
參數:
x - 要繪製矩形的 x 坐標。
y - 要繪製矩形的 y 坐標。
width - 要繪製矩形的寬度。
height - 要繪製矩形的高度。
raised - 一個用於確定矩形是凸出平面顯示還是凹入平面顯示的 boolean 值。
另請參見:
Graphics.fill3DRect(int, int, int, int, boolean)

fill3DRect

public void fill3DRect(int x,
                       int y,
                       int width,
                       int height,
                       boolean raised)
繪製一個用當前顏色填充的 3-D 高亮顯示矩形。矩形的邊是高亮顯示的,以至於從左上角看呈斜面並加亮。高亮顯示效果和填充所用的顏色根據當前 Color 確定。此方法獨佔使用當前 Color,並忽略當前 Paint

覆寫:
類別 Graphics 中的 fill3DRect
參數:
x - 要填充矩形的 x 坐標。
y - 要填充矩形的 y 坐標。
width - 要填充矩形的寬度。
height - 要填充矩形的高度。
raised - 一個用於確定矩形是凸出平面顯示還是凹入平面顯示的 boolean 值。
另請參見:
Graphics.draw3DRect(int, int, int, int, boolean)

draw

public abstract void draw(Shape s)
使用當前 Graphics2D 上下文的設置勾畫 Shape 的輪廓。應用的呈現屬性包括 ClipTransformPaintCompositeStroke 屬性。

參數:
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)

drawImage

public abstract boolean drawImage(Image img,
                                  AffineTransform xform,
                                  ImageObserver obs)
呈現一個圖像,在繪製前進行從圖像空間到使用者空間的轉換。從使用者空間到設備空間的轉換使用 Graphics2D 中的當前 Transform 完成。在應用 Graphics2D 上下文中的 transform 屬性之前,指定的轉換被應用到圖像。應用的呈現屬性包括 ClipTransformComposite 屬性。注意,如果指定的轉換不可逆,則不會完成呈現。

參數:
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)

drawImage

public abstract void drawImage(BufferedImage img,
                               BufferedImageOp op,
                               int x,
                               int y)
呈現使用 BufferedImageOp 過濾的 BufferedImage。 應用的呈現屬性包括 ClipTransformComposite 屬性。這等價於:
 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)

drawRenderedImage

public abstract void drawRenderedImage(RenderedImage img,
                                       AffineTransform xform)
呈現 RenderedImage,在繪製前進行從圖像空間到使用者空間的轉換。從使用者空間到設備空間的轉換使用 Graphics2D 中的當前 Transform 完成。在應用 Graphics2D 上下文中的 transform 屬性之前,指定的轉換被應用到圖像。應用的呈現屬性包括 ClipTransformComposite 屬性。注意,如果指定的轉換不可逆,則不會完成呈現。

參數:
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)

drawRenderableImage

public abstract void drawRenderableImage(RenderableImage img,
                                         AffineTransform xform)
呈現 RenderableImage,在繪製前進行從圖像空間到使用者空間的轉換。從使用者空間到設備空間的轉換使用 Graphics2D 中當前的 Transform 完成。在應用 Graphics2D 上下文中的 transform 屬性之前,指定的轉換被應用到圖像。應用的呈現屬性包括 ClipTransformComposite 屬性。注意,如果指定的轉換不可逆,則不會完成呈現。

呈現 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)

drawString

public abstract void drawString(String str,
                                int x,
                                int y)
使用 Graphics2D 上下文中的當前文本屬性狀態呈現指定的 String 的文本。首字元的基線位於使用者空間的 (xy) 位置處。應用的呈現屬性包括 ClipTransformPaintFontComposite 屬性。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。

指定者:
類別 Graphics 中的 drawString
參數:
str - 要呈現的字元串
x - 呈現 String 位置的 x 坐標
y - 呈現 String 位置的 y 坐標
拋出:
NullPointerException - 如果 strnull
從以下版本開始:
JDK1.0
另請參見:
Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)

drawString

public abstract void drawString(String str,
                                float x,
                                float y)
使用 Graphics2D 上下文中當前文本屬性狀態呈現由指定 String 指定的文本。首字元的基線位於使用者空間中的 (xy) 位置處。應用的呈現屬性包括 ClipTransformPaintFontComposite 屬性。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。

參數:
str - 要呈現的 String
x - 呈現 String 位置的 x 坐標
y - 呈現 String 位置的 y 坐標
拋出:
NullPointerException - 如果 strnull
另請參見:
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)

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                int x,
                                int y)
依照 TextAttribute 類別的規範應用指定迭代器的屬性,呈現指定迭代器的文本。

首字元的基線位於使用者空間中的 (xy) 位置處。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。

指定者:
類別 Graphics 中的 drawString
參數:
iterator - 要呈現其文本的迭代器
x - 要呈現迭代器文本處的 x 坐標
y - 要呈現迭代器文本處的 y 坐標
拋出:
NullPointerException - 如果 iteratornull
另請參見:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                float x,
                                float y)
依照 TextAttribute 類別的規範應用指定迭代器的屬性,呈現指定迭代器的文本。

首字元的基線位於使用者空間中的 (xy) 位置處。對於文稿系統(如 Hebrew 和 Arabic)中的字元,在提供的坐標位於基線上最左邊字元的情況下,可以從右到左呈現字形。

參數:
iterator - 要呈現其文本的迭代器
x - 要呈現迭代器文本處的 x 坐標
y - 要呈現迭代器文本處的 y 坐標
拋出:
NullPointerException - 如果 iteratornull
另請參見:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

drawGlyphVector

public abstract void drawGlyphVector(GlyphVector g,
                                     float x,
                                     float y)
使用 Graphics2D 上下文的呈現屬性,呈現指定 GlyphVector 的文本。應用的呈現屬性包括 ClipTransformPaintComposite 屬性。GlyphVector 指定來自一個 Font 的各個字形。GlyphVector 還可以包含字形位置。這是將一組字元呈現到螢幕的最快方式。

參數:
g - 要呈現的 GlyphVector
x - 字形呈現使用者空間中的 x 位置
y - 字形呈現使用者空間中的 y 位置
拋出:
NullPointerException - 如果 gnull
另請參見:
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)

fill

public abstract void fill(Shape s)
使用 Graphics2D 上下文的設置,填充 Shape 的內部區域。應用的呈現屬性包括 ClipTransformPaintComposite 屬性。

參數:
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)

hit

public abstract boolean hit(Rectangle rect,
                            Shape s,
                            boolean onStroke)
檢查指定的 Shape 是否與設備空間中的指定 Rectangle 相交。如果 onStroke 為 false,則此方法會檢查指定 Shape 的內部區域是否與指定的 Rectangle 相交。如果 onStroketrue,則此方法會檢查指定 Shape 輪廓的 Stroke 是否與指定的 Rectangle 相交。可應用的呈現屬性包括 ClipTransformStroke 屬性。

參數:
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)

getDeviceConfiguration

public abstract GraphicsConfiguration getDeviceConfiguration()
返回與此 Graphics2D 關聯的設備配置。

返回:
Graphics2D 的設備配置。

setComposite

public abstract void setComposite(Composite comp)
Graphics2D 上下文設置 CompositeComposite 用於所有繪製方法中,如 drawImagedrawStringdrawfill。 它指定新的像素如何在呈現過程中與圖形設備上的現有像素組合。

如果此 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

setPaint

public abstract void setPaint(Paint paint)
Graphics2D 上下文設置 Paint 屬性。使用為 nullPaint 物件調用此方法對此 Graphics2D 的當前 Paint 屬性沒有任何影響。

參數:
paint - 呈現過程中用於產生顏色的 Paint 物件;或者為 null
另請參見:
Graphics.setColor(java.awt.Color), getPaint(), GradientPaint, TexturePaint

setStroke

public abstract void setStroke(Stroke s)
Graphics2D 上下文設置 Stroke

參數:
s - 呈現過程中用於勾畫 ShapeStroke 物件
另請參見:
BasicStroke, getStroke()

setRenderingHint

public abstract void setRenderingHint(RenderingHints.Key hintKey,
                                      Object hintValue)
為呈現演算法設置單個首選項的值。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。有關常用鍵和值的定義,請參考 RenderingHints 類別。

參數:
hintKey - 要設置提示的鍵。
hintValue - 指示指定提示類別別首選項的值。
另請參見:
getRenderingHint(RenderingHints.Key), RenderingHints

getRenderingHint

public abstract Object getRenderingHint(RenderingHints.Key hintKey)
返回呈現演算法的單個首選項的值。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。有關常用鍵和值的定義,請參考 RenderingHints 類別。

參數:
hintKey - 與要獲得的提示對應的鍵。
返回:
表示指定提示鍵的值的物件。一些鍵及其關聯值在 RenderingHints 類別中定義。
另請參見:
RenderingHints, setRenderingHint(RenderingHints.Key, Object)

setRenderingHints

public abstract void setRenderingHints(Map<?,?> hints)
使用指定的 hints 替換用於所有呈現演算法首選項的值。丟棄所有呈現提示的現有值,並從指定的 Map 物件初始化一組新的已知提示和值。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。有關常用鍵和值的定義,請參考 RenderingHints 類別。

參數:
hints - 要設置的呈現提示
另請參見:
getRenderingHints(), RenderingHints

addRenderingHints

public abstract void addRenderingHints(Map<?,?> hints)
為呈現演算法設置任意數量的首選項值。僅修改在指定 Map 物件中存在的呈現提示值。所有指定物件中不存在的其它首選項不做修改。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。有關常用鍵和值的定義,請參考 RenderingHints 類別。

參數:
hints - 要設置的呈現提示
另請參見:
RenderingHints

getRenderingHints

public abstract RenderingHints getRenderingHints()
獲取呈現演算法的首選項。提示類別別包括對呈現過程中的呈現質量和總時間/質量折衷的控制。返回所有在一次操作中指定的提示鍵/值對。有關常用鍵和值的定義,請參考 RenderingHints 類別。

返回:
包含對當前首選項的 RenderingHints 實例的參考。
另請參見:
RenderingHints, setRenderingHints(Map)

translate

public abstract void translate(int x,
                               int y)
Graphics2D 上下文的原點平移到當前坐標系中的點 (xy)。修改 Graphics2D 上下文,使其新的原點對應於此 Graphics2D 上下文原坐標系中的點 (xy)。在此圖形上下文上執行的後續呈現操作使用的所有坐標均相對於這個新原點。

指定者:
類別 Graphics 中的 translate
參數:
x - 指定的 x 坐標
y - 指定的 y 坐標
從以下版本開始:
JDK1.0

translate

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 軸平移的距離

rotate

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 - 旋轉的角度,以弧度為單位

rotate

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 坐標

scale

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 坐標相乘的量。

shear

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 坐標的函數

transform

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

setTransform

public abstract void setTransform(AffineTransform Tx)
覆寫 Graphics2D 上下文中的 Transform。警告:切勿使用此方法在現有轉換之上應用新的坐標轉換,因為 Graphics2D 可能已經有用於其它用途(例如,呈現 Swing 元件或應用縮放轉換以調整印表機的分辨率)的轉換。

要添加坐標轉換,請使用 transformrotatescaleshear 方法。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

getTransform

public abstract AffineTransform getTransform()
返回 Graphics2D 上下文中當前 Transform 的副本。

返回:
Graphics2D 上下文中的當前 AffineTransform
另請參見:
transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)

getPaint

public abstract Paint getPaint()
返回 Graphics2D 上下文中的當前 Paint

返回:
當前 Graphics2D Paint,它定義一種顏色或網要。
另請參見:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color)

getComposite

public abstract Composite getComposite()
返回 Graphics2D 上下文中的當前 Composite

返回:
當前 Graphics2D Composite,它定義一種復合樣式。
另請參見:
setComposite(java.awt.Composite)

setBackground

public abstract void setBackground(Color color)
設置 Graphics2D 上下文的背景色。背景色用於清除區域。當為 Component 建構 Graphics2D 時,可以從 Component 繼承背景色。設置 Graphics2D 上下文中的背景色僅影響後續 clearRect 調用,不影響該 Component 的背景色。要更改 Component 的背景,請使用該 Component 的相應方法。

參數:
color - 在對 clearRect 的後續調用中所用的背景色
另請參見:
getBackground(), Graphics.clearRect(int, int, int, int)

getBackground

public abstract Color getBackground()
返回用於清除區域的背景色。

返回:
當前 Graphics2D Color,它定義背景色。
另請參見:
setBackground(java.awt.Color)

getStroke

public abstract Stroke getStroke()
返回 Graphics2D 上下文中的當前 Stroke

返回:
當前 Graphics2D Stroke,它定義線條樣式。
另請參見:
setStroke(java.awt.Stroke)

clip

public abstract void clip(Shape s)
將當前 Clip 與指定 Shape 的內部區域相交,並將 Clip 設置為所得的交集。與當前 Clip 相交之前,使用當前 Graphics2D Transform 轉換指定的 Shape。 此方法用於使當前 Clip 變小。要使 Clip 變大,請使用 setClip。 此方法修改的使用者剪貼區 獨立於與設備邊界和可視性關聯的剪切。如果以前沒有設置任何剪貼區,或者已經使用帶有 null 參數的 setClip 將剪貼區清除,那麼指定的 Shape 將成為新的使用者剪貼區。

參數:
s - 要與當前 Clip 相交的 Shape。如果 snull,則此方法會清除當前 Clip

getFontRenderContext

public abstract FontRenderContext getFontRenderContext()
獲取此 Graphics2D 上下文中 Font 的呈現上下文。FontRenderContext 封裝應用程序提示,如抗鋸齒和小數規格,以及目標設備的特定資訊(如每英吋的點數)。當使用 FontTextLayout 等物件執行印刷格式編排時,應用程序應提供此資訊。將各種呈現提示應用到文本呈現時,執行其自身佈局並且需要對字形(如前距和線高)的各種特徵進行精確測量的應用程序也應提供此資訊。

返回:
對 FontRenderContext 實例的參考。
從以下版本開始:
1.2
另請參見:
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