基本介紹
- 中文名:PathIterator接口
- 允許:這些對象一次一段地獲取其邊界
- 實現 :Shape 接口的對象
- 提供:返回其邊界幾何形狀的機制
繼承關係,另請參見,欄位摘要,方法摘要,欄位詳細信息,WIND_EVEN_ODD,WIND_NON_ZERO,SEG_MOVETO,SEG_LINETO,SEG_QUADTO,SEG_CUBICTO,SEG_CLOSE,方法詳細信息,getWindingRule,isDone,next,currentSegment,currentSegment,
繼承關係
java.awt.geom接口 PathIterator
所有已知實現類:FlatteningPathIteratorpublic 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