檢視原始碼 wxGraphicsPath (wx v2.4.3)
wxGraphicsPath
是一個幾何路徑的原生表示法。
其內容對於各個渲染器而言是特定的且私有的。實例是參考計數的,因此可以像往常一樣賦值。取得有效實例的唯一方法是使用 wxGraphicsContext:createPath/1
或 wxGraphicsRenderer:createPath/1
。
此類別繼承自以下類別,且可以使用以下類別的函式:
wxWidgets 文件:wxGraphicsPath
摘要
函式
新增一個圓弧(半徑為 r
),該圓弧與連接當前點和 (x1
, y1
) 的線以及連接 (x1
, y1
) 和 (x2
, y2
) 的線相切。
在 (x
, y
) 周圍附加一個半徑為 r
的圓,作為新的封閉子路徑。
從目前點使用兩個控制點和一個終點新增一條三次貝茲曲線。
從目前點使用兩個控制點和一個終點新增一條三次貝茲曲線。
附加一個符合傳入矩形的橢圓,作為新的封閉子路徑。
從目前點新增一條直線到 p
。
從目前點新增一條直線到 (x
, y
)。
將另一個路徑新增到目前路徑上。
從目前點使用一個控制點和一個終點新增一條二次貝茲曲線。
附加一個矩形作為新的封閉子路徑。
附加一個圓角矩形作為新的封閉子路徑。
關閉目前的子路徑。
回傳值:如果點在路徑內則為 true。
回傳值:如果點在路徑內則為 true。
取得包含所有點(可能包括控制點)的邊界框。
取得目前路徑的最後一個點,如果尚未設定則為 (0,0)。
在 p
處開始一個新的子路徑。
在 (x
, y
) 處開始一個新的子路徑。
使用矩陣轉換此路徑的每個點。
類型
-type wxGraphicsPath() :: wx:wx_object().
函式
-spec addArc(This, X, Y, R, StartAngle, EndAngle, Clockwise) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number(), R :: number(), StartAngle :: number(), EndAngle :: number(), Clockwise :: boolean().
新增一個圓弧。
圓由其中心座標 (x
, y
) 或 c
及其半徑 r
定義。圓弧從起始角度 startAngle
到 endAngle
,順時針或逆時針方向取決於 clockwise
參數的值。
角度以弧度測量,但與通常的數學慣例相反,始終從水平軸 順時針
方向測量。
如果對於順時針圓弧,endAngle
小於 startAngle
,它將逐漸增加 2*pi 直到大於 startAngle
。如果對於逆時針圓弧,endAngle
大於 startAngle
,它將逐漸減少 2*pi 直到小於 startAngle
。
如果設定了目前點,則會在路徑中新增一個初始線段,將目前點連接到圓弧的起點。
-spec addArcToPoint(This, X1, Y1, X2, Y2, R) -> ok when This :: wxGraphicsPath(), X1 :: number(), Y1 :: number(), X2 :: number(), Y2 :: number(), R :: number().
新增一個圓弧(半徑為 r
),該圓弧與連接當前點和 (x1
, y1
) 的線以及連接 (x1
, y1
) 和 (x2
, y2
) 的線相切。
如果目前點和圓弧的起點不同,也會附加一條連接這些點的直線。如果在呼叫 addArcToPoint/6
之前沒有目前點,此函式的行為就像在前面呼叫了 MoveToPoint(0, 0)。在呼叫此函式後,目前點將位於圓弧的終點。
-spec addCircle(This, X, Y, R) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number(), R :: number().
在 (x
, y
) 周圍附加一個半徑為 r
的圓,作為新的封閉子路徑。
在呼叫此函式後,目前點將位於 (x+r
, y
)。
-spec addCurveToPoint(This, C1, C2, E) -> ok when This :: wxGraphicsPath(), C1 :: {X :: float(), Y :: float()}, C2 :: {X :: float(), Y :: float()}, E :: {X :: float(), Y :: float()}.
從目前點使用兩個控制點和一個終點新增一條三次貝茲曲線。
如果在呼叫 addCurveToPoint/7
之前沒有目前點,此函式的行為就像在前面呼叫了 MoveToPoint(c1
)。
-spec addCurveToPoint(This, Cx1, Cy1, Cx2, Cy2, X, Y) -> ok when This :: wxGraphicsPath(), Cx1 :: number(), Cy1 :: number(), Cx2 :: number(), Cy2 :: number(), X :: number(), Y :: number().
從目前點使用兩個控制點和一個終點新增一條三次貝茲曲線。
如果在呼叫 addCurveToPoint/7
之前沒有目前點,此函式的行為就像在前面呼叫了 MoveToPoint(cx1
, cy1
)。
-spec addEllipse(This, X, Y, W, H) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number(), W :: number(), H :: number().
附加一個符合傳入矩形的橢圓,作為新的封閉子路徑。
在呼叫此函式後,目前點將位於 (x+w
, y+h/2
)。
-spec addLineToPoint(This, P) -> ok when This :: wxGraphicsPath(), P :: {X :: float(), Y :: float()}.
從目前點新增一條直線到 p
。
如果在呼叫 addLineToPoint/3
之前尚未設定目前點,此函式的行為將如同 moveToPoint/3
。
-spec addLineToPoint(This, X, Y) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number().
從目前點新增一條直線到 (x
, y
)。
如果在呼叫 addLineToPoint/3
之前尚未設定目前點,此函式的行為將如同 moveToPoint/3
。
-spec addPath(This, Path) -> ok when This :: wxGraphicsPath(), Path :: wxGraphicsPath().
將另一個路徑新增到目前路徑上。
在呼叫此函式後,目前點將位於新增路徑的目前點。對於 Direct2D,當呼叫此函式時,要附加的路徑不應包含已開始的非空子路徑。
-spec addQuadCurveToPoint(This, Cx, Cy, X, Y) -> ok when This :: wxGraphicsPath(), Cx :: number(), Cy :: number(), X :: number(), Y :: number().
從目前點使用一個控制點和一個終點新增一條二次貝茲曲線。
如果在呼叫 addQuadCurveToPoint/5
之前沒有目前點,此函式的行為就像在前面呼叫了 MoveToPoint(cx
, cy
)。
-spec addRectangle(This, X, Y, W, H) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number(), W :: number(), H :: number().
附加一個矩形作為新的封閉子路徑。
在呼叫此函式後,目前點將位於 (x
, y
)。
-spec addRoundedRectangle(This, X, Y, W, H, Radius) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number(), W :: number(), H :: number(), Radius :: number().
附加一個圓角矩形作為新的封閉子路徑。
如果 radius
等於 0,此函式的行為將如同 addRectangle/5
,否則在呼叫此函式後,目前點將位於 (x+w
, y+h/2
)。
-spec closeSubpath(This) -> ok when This :: wxGraphicsPath().
關閉目前的子路徑。
在呼叫此函式後,目前點將位於子路徑的連接終點。
-spec contains(This, C) -> boolean() when This :: wxGraphicsPath(), C :: {X :: float(), Y :: float()}.
-spec contains(This, X, Y) -> boolean() when This :: wxGraphicsPath(), X :: number(), Y :: number(); (This, C, [Option]) -> boolean() when This :: wxGraphicsPath(), C :: {X :: float(), Y :: float()}, Option :: {fillStyle, wx:wx_enum()}.
回傳值:如果點在路徑內則為 true。
-spec contains(This, X, Y, [Option]) -> boolean() when This :: wxGraphicsPath(), X :: number(), Y :: number(), Option :: {fillStyle, wx:wx_enum()}.
回傳值:如果點在路徑內則為 true。
-spec getBox(This) -> {X :: float(), Y :: float(), W :: float(), H :: float()} when This :: wxGraphicsPath().
取得包含所有點(可能包括控制點)的邊界框。
-spec getCurrentPoint(This) -> {X :: float(), Y :: float()} when This :: wxGraphicsPath().
取得目前路徑的最後一個點,如果尚未設定則為 (0,0)。
-spec moveToPoint(This, P) -> ok when This :: wxGraphicsPath(), P :: {X :: float(), Y :: float()}.
在 p
處開始一個新的子路徑。
-spec moveToPoint(This, X, Y) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number().
在 (x
, y
) 處開始一個新的子路徑。
-spec transform(This, Matrix) -> ok when This :: wxGraphicsPath(), Matrix :: wxGraphicsMatrix:wxGraphicsMatrix().
使用矩陣轉換此路徑的每個點。
對於 Direct2D,當呼叫此函式時,目前路徑不應包含已開始的非空子路徑。