JavaTM 2 Platform
Standard Ed. 6

java.awt.geom
介面 PathIterator

所有已知實作類別:
FlatteningPathIterator

public interface PathIterator

PathIterator 介面通過允許調用者一次一段地獲取邊界的路徑,為實作 Shape 介面的物件提供返回其邊界幾何形狀的機制。此介面允許這些物件一次一段地獲取其邊界,方法是使用從一階到三階 Bézier 曲線,這些曲線是直線、二次或三次 Bézier 樣條。

多個子路徑可以通過使用 "MOVETO" 段在幾何形狀中創建間斷性以從一個子路徑的結尾移動到下一個子路徑的開頭來表示。

每個子路徑都可以被手動關閉,方法是在該子路徑的起始 "MOVETO" 段所在的坐標上結束子路徑中的最後一段,或者使用 "CLOSE" 段追加一條線段連接最後一點和第一點。應該知道,相對於使用 "CLOSE" 段關閉路徑而言,手動關閉輪廓可能導致在子路徑的結束點使用不同的線樣式裝飾。例如,BasicStroke 物件使用線 "JOIN" 裝飾來連接第一點和最後一點(如果遇到 "CLOSE" 段),而在該開頭坐標上結束路徑將導致在結尾使用線 "CAP" 裝飾。

另請參見:
Shape, BasicStroke

欄位摘要
static int SEG_CLOSE
          該段型別常數指定應該通過將線段追加到與最新 SEG_MOVETO 對應的點來關閉前面的子路徑。
static int SEG_CUBICTO
          該段型別常數針對某個 3 個點的集合,指定要根據最新指定點繪製的三次參數曲線。
static int SEG_LINETO
          該段型別常數針對某個點,指定要根據最新指定點繪製的線的結束點。
static int SEG_MOVETO
          該段型別常數針對某個點,指定新子路徑的起始位置。
static int SEG_QUADTO
          該段型別常數針對某對點,指定要根據最新指定點繪製的二次參數曲線。
static int WIND_EVEN_ODD
          用於指定確定路徑內部的奇偶規則的旋繞規則常數。
static int WIND_NON_ZERO
          用於指定確定路徑內部的非零規則的旋繞規則常數。
 
方法摘要
 int currentSegment(double[] coords)
          使用迭代返回當前路徑段的坐標和型別。
 int currentSegment(float[] coords)
          使用迭代返回當前路徑段的坐標和型別。
 int getWindingRule()
          返回用於確定路徑迭代的旋繞規則。
 boolean isDone()
          測試迭代是否完成。
 void next()
          只要最初的遍歷方向上還存在點,就沿該方向將迭代器移動到下一個路徑段。
 

欄位詳細資訊

WIND_EVEN_ODD

static final int WIND_EVEN_ODD
用於指定確定路徑內部的奇偶規則的旋繞規則常數。奇偶規則規定,如果路徑段穿過任意方向上從一點向無窮大繪製的射線的次數為奇數,則該點位於路徑內。

另請參見:
常數欄位值

WIND_NON_ZERO

static final int WIND_NON_ZERO
用於指定確定路徑內部的非零規則的旋繞規則常數。非零規則規定,如果路徑段按逆時針方向與按順時針方向穿過任意方向上從一點向無窮大繪製的射線的次數不同,則該點位於路徑內。

另請參見:
常數欄位值

SEG_MOVETO

static final int SEG_MOVETO
該段型別常數針對某個點,指定新子路徑的起始位置。

另請參見:
常數欄位值

SEG_LINETO

static final int SEG_LINETO
該段型別常數針對某個點,指定要根據最新指定點繪製的線的結束點。

另請參見:
常數欄位值

SEG_QUADTO

static final int SEG_QUADTO
該段型別常數針對某對點,指定要根據最新指定點繪製的二次參數曲線。該曲線通過使用最新指定的(當前)點 (CP)、第一個控制點 (P1) 和最後一個內插的控制點 (P2) 在 (t=[0..1]) 範圍內解參數控制方程來內插。此曲線的參數控制方程為:
          P(t) = B(2,0)*CP + B(2,1)*P1 + B(2,2)*P2
          0 <= t <= 1

        B(n,m) = mth coefficient of nth degree Bernstein polynomial
               = C(n,m) * t^(m) * (1 - t)^(n-m)
        C(n,m) = Combinations of n things, taken m at a time
               = n! / (m! * (n-m)!)
 

另請參見:
常數欄位值

SEG_CUBICTO

static final int SEG_CUBICTO
該段型別常數針對某個 3 個點的集合,指定要根據最新指定點繪製的三次參數曲線。該曲線通過使用最新指定的(當前)點 (CP)、第一個控制點 (P1)、第二個控制點 (P2) 和最後一個內插的控制點 (P3) 在 (t=[0..1]) 範圍內解參數控制方程來內插。此曲線的參數控制方程為:
          P(t) = B(3,0)*CP + B(3,1)*P1 + B(3,2)*P2 + B(3,3)*P3
          0 <= t <= 1

        B(n,m) = mth coefficient of nth degree Bernstein polynomial
               = C(n,m) * t^(m) * (1 - t)^(n-m)
        C(n,m) = Combinations of n things, taken m at a time
               = n! / (m! * (n-m)!)
 
這一形式的曲線通常稱為 Bézier 曲線。

另請參見:
常數欄位值

SEG_CLOSE

static final int SEG_CLOSE
該段型別常數指定應該通過將線段追加到與最新 SEG_MOVETO 對應的點來關閉前面的子路徑。

另請參見:
常數欄位值
方法詳細資訊

getWindingRule

int getWindingRule()
返回用於確定路徑迭代的旋繞規則。

返回:
旋繞規則。
另請參見:
WIND_EVEN_ODD, WIND_NON_ZERO

isDone

boolean isDone()
測試迭代是否完成。

返回:
如果已經讀取了所有的段,則返回 true;否則返回 false

next

void next()
只要最初的遍歷方向上還存在點,就沿該方向將迭代器移動到下一個路徑段。


currentSegment

int currentSegment(float[] coords)
使用迭代返回當前路徑段的坐標和型別。返回值就是路徑段型別:SEG_MOVETO、SEG_LINETO、SEG_QUADTO、SEG_CUBICTO 或 SEG_CLOSE。必須傳入長度為 6 的 float 陣列,該陣列可用於存儲點的坐標。每個點都存儲為一對 float x、y 坐標。SEG_MOVETO 和 SEG_LINETO 型別返回一個點,SEG_QUADTO 返回兩個點,SEG_CUBICTO 返回 3 個點,SEG_CLOSE 不返回任何點。

參數:
coords - 保存從此方法返回資料的陣列
返回:
當前路徑段的路徑段型別。
另請參見:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE

currentSegment

int currentSegment(double[] coords)
使用迭代返回當前路徑段的坐標和型別。返回值就是路徑段型別:SEG_MOVETO、SEG_LINETO、SEG_QUADTO、SEG_CUBICTO 或 SEG_CLOSE。必須傳入長度為 6 的 double 陣列,該陣列可用於存儲點的坐標。每個點都存儲為一對 double x、y 坐標。SEG_MOVETO 和 SEG_LINETO 型別返回一個點,SEG_QUADTO 返回兩個點,SEG_CUBICTO 返回 3 個點,SEG_CLOSE 不返回任何點。

參數:
coords - 保存從此方法返回資料的陣列
返回:
當前路徑段的路徑段型別。
另請參見:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only