查看源代码 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,当调用此函数时,当前路径不应包含已开始的非空子路径。