Java 2D(3) – 描圖(Rendering)

Java 2D API 包含 java.awt.Graphics2D class,它繼承自 Graphics class,提供增強型的圖像(graphics)和描圖(rendering)等特色,包括有:

  • draw methos :使用 stroke 和 paint 屬性來描繪任何圖形的外框(outline)。
  • fill method :可依指定的 paint 屬性填滿顏色(color)或圖案(pattern)。
  • drawString method :可畫出文字,其中的 font 屬性會被轉換成圖形,並可填滿由 paint 屬性所指定的顏色或圖案。
  • drawImage method :可畫出指定的圖像(image)。

以上提到的 method 都離不開以下兩個群組:

  1. 畫出形狀的方法(Methods to draw a shape)。
  2. 影響描圖的方法(Methods that affect rendering)。

第2個群組使用由 Graphics2D 而來的 state 屬性,有以下幾個目的:

  • 改變筆劃的寬度(stroke width)
  • 改變筆劃的組合
  • 設定剪裁路徑去限制描圖範圍
  • 定義顏色和圖案去填滿形狀
  • 指定如何組合多重圖像

Java 2D API 可透過型別轉換(cast)將由 Graphics object 產生的元件(component)轉型成 Graphics2D object,如下範例:

public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    ...
}

以下列出幾個 Graphics2D class 描圖所包含的幾個屬性:

2D-4.gif pen 屬性:圖形的外框(outline)。這個筆劃(stroke)屬性允許你畫出任何尺寸的實線和虛線(dashing),並且可以在線端(end-cap)加上裝飾。
2D-5.gif fill 屬性:用在圖形的內部。這個顏料(paint)屬性可以讓你填滿單色(solid colors)、斜度(gradients)和圖案(patterns)。
2D-6.gif compositing 屬性:用在圖形物件的重疊上(overlap)
2D-7.gif

transform 屬性:可以將座標空間從 user space 轉成 device-space 。選項有:變形(translation)、旋轉(rotation)、縮放(scaling)和裁切(shearing)。

2D-8.gif clip 屬性:使用任何 Shape Object 的外框去定義剪裁路徑(clipping path)。
2D-9.gif font 屬性:轉換文字字串(text strings)為圖形。
2D-10.gif Rendering hits:調整速度(speed)和品質(quality)兩者間的偏好設定。

(以上圖片來源:http://java.sun.com/docs/books/tutorial/2d/overview/rendering.html)

參考資料:http://java.sun.com/docs/books/tutorial/2d/overview/rendering.html