查看源代码 wxGraphicsPath (wx v2.4.3)

wxGraphicsPath 是几何路径的本地表示。

其内容对于各个渲染器是特定的且私有的。实例是引用计数的,因此可以像往常一样赋值。获取有效实例的唯一方法是使用 wxGraphicsContext:createPath/1wxGraphicsRenderer: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().

函数

链接到此函数

addArc(This, C, R, StartAngle, EndAngle, Clockwise)

查看源代码
-spec addArc(This, C, R, StartAngle, EndAngle, Clockwise) -> ok
                when
                    This :: wxGraphicsPath(),
                    C :: {X :: float(), Y :: float()},
                    R :: number(),
                    StartAngle :: number(),
                    EndAngle :: number(),
                    Clockwise :: boolean().
链接到此函数

addArc(This, X, Y, R, StartAngle, EndAngle, Clockwise)

查看源代码
-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 定义。圆弧从起始角度 startAngleendAngle,顺时针或逆时针方向取决于 clockwise 参数的值。

角度以弧度为单位测量,但与通常的数学约定相反,总是从水平轴 顺时针 方向测量。

如果对于顺时针圆弧,endAngle 小于 startAngle,则它将逐步增加 2*pi,直到它大于 startAngle。如果对于逆时针圆弧,endAngle 大于 startAngle,则它将逐步减小 2*pi,直到它小于 startAngle

如果设置了当前点,则会将一条初始线段添加到路径中,以将当前点连接到圆弧的起点。

链接到此函数

addArcToPoint(This, X1, Y1, X2, Y2, R)

查看源代码
-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) 一样。在此调用之后,当前点将位于圆弧的终点。

链接到此函数

addCircle(This, X, Y, R)

查看源代码
-spec addCircle(This, X, Y, R) -> ok
                   when This :: wxGraphicsPath(), X :: number(), Y :: number(), R :: number().

将以 (x,y) 为中心,半径为 r 的圆添加为新的闭合子路径。

在此调用之后,当前点将位于 (x+r, y)。

链接到此函数

addCurveToPoint(This, C1, C2, E)

查看源代码
-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) 一样。

链接到此函数

addCurveToPoint(This, Cx1, Cy1, Cx2, Cy2, X, Y)

查看源代码
-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) 一样。

链接到此函数

addEllipse(This, X, Y, W, H)

查看源代码
-spec addEllipse(This, X, Y, W, H) -> ok
                    when
                        This :: wxGraphicsPath(),
                        X :: number(),
                        Y :: number(),
                        W :: number(),
                        H :: number().

将一个椭圆添加为新的闭合子路径,该椭圆适合传入的矩形。

在此调用之后,当前点将位于 (x+w, y+h/2)。

链接到此函数

addLineToPoint(This, P)

查看源代码
-spec addLineToPoint(This, P) -> ok when This :: wxGraphicsPath(), P :: {X :: float(), Y :: float()}.

从当前点到 p 添加一条直线。

如果在调用 addLineToPoint/3 之前尚未设置当前点,则此函数的行为类似于 moveToPoint/3

链接到此函数

addLineToPoint(This, X, Y)

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

链接到此函数

addQuadCurveToPoint(This, Cx, Cy, X, Y)

查看源代码
-spec addQuadCurveToPoint(This, Cx, Cy, X, Y) -> ok
                             when
                                 This :: wxGraphicsPath(),
                                 Cx :: number(),
                                 Cy :: number(),
                                 X :: number(),
                                 Y :: number().

从当前点添加一条二次贝塞尔曲线,使用一个控制点和一个端点。

如果在调用 addQuadCurveToPoint/5 之前没有当前点,则此函数的行为就好像前面调用了 MoveToPoint(cx, cy) 一样。

链接到此函数

addRectangle(This, X, Y, W, H)

查看源代码
-spec addRectangle(This, X, Y, W, H) -> ok
                      when
                          This :: wxGraphicsPath(),
                          X :: number(),
                          Y :: number(),
                          W :: number(),
                          H :: number().

将一个矩形添加为新的闭合子路径。

在此调用之后,当前点将位于 (x, y)。

链接到此函数

addRoundedRectangle(This, X, Y, W, H, Radius)

查看源代码
-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()}.

等效于 contains(This, C, [])

-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 处开始一个新的子路径。

链接到此函数

moveToPoint(This, X, Y)

查看源代码
-spec moveToPoint(This, X, Y) -> ok when This :: wxGraphicsPath(), X :: number(), Y :: number().

在 (x,y) 处开始一个新的子路径。

链接到此函数

transform(This, Matrix)

查看源代码
-spec transform(This, Matrix) -> ok
                   when This :: wxGraphicsPath(), Matrix :: wxGraphicsMatrix:wxGraphicsMatrix().

通过矩阵变换此路径的每个点。

对于 Direct2D,当调用此函数时,当前路径不应包含已开始的非空子路径。