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

wxGraphicsContext 实例是绘制在其上的对象。

它由渲染器使用 wxGraphicsRenderer:createContext/2 创建。这可以直接使用渲染器实例,也可以间接使用 wxGraphicsContext 的静态便利函数 create/1,该函数始终将任务委托给默认渲染器。

注意:对于某些渲染器(如 Direct2D 或 Cairo),绘图操作的处理可能会被延迟(Direct2D 渲染目标通常会构建一批渲染命令,但会延迟这些命令的处理,而 Cairo 则在单独的表面上操作),因此要使绘图结果可见,您需要通过调用 wxGraphicsContext::Flush()(在 wx 中未实现)或销毁上下文来更新上下文的内容。

请参阅

此类派生自,并且可以使用以下函数:

wxWidgets 文档:wxGraphicsContext

摘要

函数

将裁剪区域设置为给定区域与先前设置的裁剪区域的交集。

这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。

将传入的变换与此上下文的当前变换连接起来。

创建一个仅可用于测量文本的轻量级上下文。

wxBrush 创建一个原生画刷。

wxFont 和文本颜色创建一个原生图形字体。

使用指定的属性创建字体对象。

这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。

创建一个带有线性渐变的原生画刷。画刷从 (@a x1, @a y1) 开始,到 (@a x2, @a y2) 结束。可以只指定起始和结束渐变颜色 (@a c1 和 @a c2),也可以指定完整的渐变 @a stops 集。采用 wxGraphicsGradientStops 的版本是 wxWidgets 2.9.1 中的新版本。 matrix 参数是在 wxWidgets 3.1.3 中添加的

从传入的值创建一个原生仿射变换矩阵。

创建一个初始为空的原生图形路径。

wxPen 创建一个原生画笔。

这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。

创建一个带有径向渐变的原生画刷。画刷起源于 (@a startX, @a startY),并在以给定 @a radius 的 (@a endX, @a endY) 为中心的圆上结束。渐变可以通过起始和结束颜色 @a oColor 和 @a cColor 来指定,也可以通过完整的渐变 @a stops 集来指定。采用 wxGraphicsGradientStops 的版本是 wxWidgets 2.9.1 中的新版本。 在 3.1.3 中添加了将变换矩阵应用于渐变的功能

销毁对象

绘制多边形。

先填充然后描边来绘制路径。

在定义的位置绘制文本。

在定义的位置绘制文本。

在定义的位置绘制文本。

使用当前画刷填充路径。

用从 text 的开头到 text 的相应字符的宽度填充 widths 数组。

使用当前选定的字体获取字符串的尺寸。

获取此上下文的当前变换矩阵。

将裁剪重置为原始形状。

旋转当前的变换矩阵(以弧度为单位)。

缩放当前的变换矩阵。

设置用于填充路径的画刷。

设置用于绘制文本的字体。

设置用于绘制文本的字体。

设置用于描边的画笔。

设置此上下文的当前变换矩阵。

描绘一条直线。

描绘连接所有点的线。

使用当前画笔沿路径描边。

平移当前的变换矩阵。

类型

-type wxGraphicsContext() :: wx:wx_object().

函数

-spec clip(This, Region) -> ok when This :: wxGraphicsContext(), Region :: wxRegion:wxRegion().

将裁剪区域设置为给定区域与先前设置的裁剪区域的交集。

裁剪区域是限制绘图的区域。

备注

  • 裁剪区域应以逻辑坐标给出。

  • 调用此函数只能使裁剪区域变小,而不能变大。

  • 如果要将裁剪区域精确设置为指定的区域,则需要先调用 resetClip/1

  • 如果生成的裁剪区域为空,则会裁剪掉上下文上的所有绘图(绘制操作所做的所有更改都会被屏蔽掉)。

链接到此函数

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

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

这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。

链接到此函数

concatTransform(This, Matrix)

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

将传入的变换与此上下文的当前变换连接起来。

-spec create() -> wxGraphicsContext().

创建一个仅可用于测量文本的轻量级上下文。

-spec create(WindowDC) -> wxGraphicsContext()
                when
                    WindowDC ::
                        wxWindowDC:wxWindowDC() |
                        wxWindow:wxWindow() |
                        wxMemoryDC:wxMemoryDC() |
                        wxImage:wxImage().

wxWindowDC 创建一个 wxGraphicsContext

请参阅:wxGraphicsRenderer:createContext/2

链接到此函数

createBrush(This, Brush)

查看源代码
-spec createBrush(This, Brush) -> wxGraphicsBrush:wxGraphicsBrush()
                     when This :: wxGraphicsContext(), Brush :: wxBrush:wxBrush().

wxBrush 创建一个原生画刷。

链接到此函数

createFont(This, Font)

查看源代码
-spec createFont(This, Font) -> wxGraphicsFont:wxGraphicsFont()
                    when This :: wxGraphicsContext(), Font :: wxFont:wxFont().

等效于 createFont(This, Font, [])

-spec createFont(This, SizeInPixels, Facename) -> wxGraphicsFont:wxGraphicsFont()
                    when
                        This :: wxGraphicsContext(),
                        SizeInPixels :: number(),
                        Facename :: unicode:chardata();
                (This, Font, [Option]) -> wxGraphicsFont:wxGraphicsFont()
                    when
                        This :: wxGraphicsContext(),
                        Font :: wxFont:wxFont(),
                        Option :: {col, wx:wx_colour()}.

wxFont 和文本颜色创建一个原生图形字体。

注意:对于 Direct2D,图形字体只能从 TrueType 字体创建。

-spec createFont(This, SizeInPixels, Facename, [Option]) -> wxGraphicsFont:wxGraphicsFont()
                    when
                        This :: wxGraphicsContext(),
                        SizeInPixels :: number(),
                        Facename :: unicode:chardata(),
                        Option :: {flags, integer()} | {col, wx:wx_colour()}.

使用指定的属性创建字体对象。

首选使用采用 wxFont 的重载,有关更多详细信息,请参阅 wxGraphicsRenderer:createFont/4

注意:对于 Direct2D,图形字体只能从 TrueType 字体创建。

自:2.9.3

链接到此函数

createLinearGradientBrush(This, X1, Y1, X2, Y2, Stops)

查看源代码
-spec createLinearGradientBrush(This, X1, Y1, X2, Y2, Stops) -> wxGraphicsBrush:wxGraphicsBrush()
                                   when
                                       This :: wxGraphicsContext(),
                                       X1 :: number(),
                                       Y1 :: number(),
                                       X2 :: number(),
                                       Y2 :: number(),
                                       Stops :: wxGraphicsGradientStops:wxGraphicsGradientStops().

这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。

链接到此函数

createLinearGradientBrush(This, X1, Y1, X2, Y2, C1, C2)

查看源代码
-spec createLinearGradientBrush(This, X1, Y1, X2, Y2, C1, C2) -> wxGraphicsBrush:wxGraphicsBrush()
                                   when
                                       This :: wxGraphicsContext(),
                                       X1 :: number(),
                                       Y1 :: number(),
                                       X2 :: number(),
                                       Y2 :: number(),
                                       C1 :: wx:wx_colour(),
                                       C2 :: wx:wx_colour().

创建一个带有线性渐变的原生画刷。画刷从 (@a x1, @a y1) 开始,到 (@a x2, @a y2) 结束。可以只指定起始和结束渐变颜色 (@a c1 和 @a c2),也可以指定完整的渐变 @a stops 集。采用 wxGraphicsGradientStops 的版本是 wxWidgets 2.9.1 中的新版本。 matrix 参数是在 wxWidgets 3.1.3 中添加的

-spec createMatrix(This) -> wxGraphicsMatrix:wxGraphicsMatrix() when This :: wxGraphicsContext().

等效于 createMatrix(This, [])

-spec createMatrix(This, [Option]) -> wxGraphicsMatrix:wxGraphicsMatrix()
                      when
                          This :: wxGraphicsContext(),
                          Option ::
                              {a, number()} |
                              {b, number()} |
                              {c, number()} |
                              {d, number()} |
                              {tx, number()} |
                              {ty, number()}.

从传入的值创建一个原生仿射变换矩阵。

默认参数会生成单位矩阵。

-spec createPath(This) -> wxGraphicsPath:wxGraphicsPath() when This :: wxGraphicsContext().

创建一个初始为空的原生图形路径。

-spec createPen(This, Pen) -> wxGraphicsPen:wxGraphicsPen()
                   when This :: wxGraphicsContext(), Pen :: wxPen:wxPen().

wxPen 创建一个原生画笔。

除非您已经有一个 wxPen,否则首选使用采用 wxGraphicsPenInfo 的重载(在 wx 中未实现),因为仅为了将其传递给此方法而构造一个是浪费的。

链接到此函数

createRadialGradientBrush(This, StartX, StartY, EndX, EndY, Radius, Stops)

查看源代码
-spec createRadialGradientBrush(This, StartX, StartY, EndX, EndY, Radius, Stops) ->
                                   wxGraphicsBrush:wxGraphicsBrush()
                                   when
                                       This :: wxGraphicsContext(),
                                       StartX :: number(),
                                       StartY :: number(),
                                       EndX :: number(),
                                       EndY :: number(),
                                       Radius :: number(),
                                       Stops :: wxGraphicsGradientStops:wxGraphicsGradientStops().

这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。

链接到此函数

createRadialGradientBrush(This, StartX, StartY, EndX, EndY, Radius, OColor, CColor)

查看源代码
-spec createRadialGradientBrush(This, StartX, StartY, EndX, EndY, Radius, OColor, CColor) ->
                                   wxGraphicsBrush:wxGraphicsBrush()
                                   when
                                       This :: wxGraphicsContext(),
                                       StartX :: number(),
                                       StartY :: number(),
                                       EndX :: number(),
                                       EndY :: number(),
                                       Radius :: number(),
                                       OColor :: wx:wx_colour(),
                                       CColor :: wx:wx_colour().

创建一个带有径向渐变的原生画刷。画刷起源于 (@a startX, @a startY),并在以给定 @a radius 的 (@a endX, @a endY) 为中心的圆上结束。渐变可以通过起始和结束颜色 @a oColor 和 @a cColor 来指定,也可以通过完整的渐变 @a stops 集来指定。采用 wxGraphicsGradientStops 的版本是 wxWidgets 2.9.1 中的新版本。 在 3.1.3 中添加了将变换矩阵应用于渐变的功能

-spec destroy(This :: wxGraphicsContext()) -> ok.

销毁对象

链接到此函数

drawBitmap(This, Bmp, X, Y, W, H)

查看源代码
-spec drawBitmap(This, Bmp, X, Y, W, H) -> ok
                    when
                        This :: wxGraphicsContext(),
                        Bmp :: wxBitmap:wxBitmap(),
                        X :: number(),
                        Y :: number(),
                        W :: number(),
                        H :: number().

绘制位图。

对于单色位图,这被视为蒙版,并使用当前画刷进行填充。

链接到此函数

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

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

绘制椭圆。

链接到此函数

drawIcon(This, Icon, X, Y, W, H)

查看源代码
-spec drawIcon(This, Icon, X, Y, W, H) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Icon :: wxIcon:wxIcon(),
                      X :: number(),
                      Y :: number(),
                      W :: number(),
                      H :: number().

绘制图标。

链接到此函数

drawLines(This, Points)

查看源代码
-spec drawLines(This, Points) -> ok
                   when This :: wxGraphicsContext(), Points :: [{X :: float(), Y :: float()}].

等效于 drawLines(This, Points, [])

-spec drawLines(This, Points, [Option]) -> ok
                   when
                       This :: wxGraphicsContext(),
                       Points :: [{X :: float(), Y :: float()}],
                       Option :: {fillStyle, wx:wx_enum()}.

绘制多边形。

-spec drawPath(This, Path) -> ok
                  when This :: wxGraphicsContext(), Path :: wxGraphicsPath:wxGraphicsPath().

等效于 drawPath(This, Path, [])

-spec drawPath(This, Path, [Option]) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Path :: wxGraphicsPath:wxGraphicsPath(),
                      Option :: {fillStyle, wx:wx_enum()}.

先填充然后描边来绘制路径。

链接到此函数

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

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

绘制矩形。

链接到此函数

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

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

绘制圆角矩形。

链接到此函数

drawText(This, Str, X, Y)

查看源代码
-spec drawText(This, Str, X, Y) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Str :: unicode:chardata(),
                      X :: number(),
                      Y :: number().

在定义的位置绘制文本。

-spec drawText(This, Str, X, Y, Angle) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Str :: unicode:chardata(),
                      X :: number(),
                      Y :: number(),
                      Angle :: number();
              (This, Str, X, Y, BackgroundBrush) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Str :: unicode:chardata(),
                      X :: number(),
                      Y :: number(),
                      BackgroundBrush :: wxGraphicsBrush:wxGraphicsBrush().

在定义的位置绘制文本。

链接到此函数

drawText(This, Str, X, Y, Angle, BackgroundBrush)

查看源代码
-spec drawText(This, Str, X, Y, Angle, BackgroundBrush) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Str :: unicode:chardata(),
                      X :: number(),
                      Y :: number(),
                      Angle :: number(),
                      BackgroundBrush :: wxGraphicsBrush:wxGraphicsBrush().

在定义的位置绘制文本。

-spec fillPath(This, Path) -> ok
                  when This :: wxGraphicsContext(), Path :: wxGraphicsPath:wxGraphicsPath().

等效于 fillPath(This, Path, [])

-spec fillPath(This, Path, [Option]) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Path :: wxGraphicsPath:wxGraphicsPath(),
                      Option :: {fillStyle, wx:wx_enum()}.

使用当前画刷填充路径。

链接到此函数

getPartialTextExtents(This, Text)

查看源代码
-spec getPartialTextExtents(This, Text) -> [number()]
                               when This :: wxGraphicsContext(), Text :: unicode:chardata().

用从 text 的开头到 text 的相应字符的宽度填充 widths 数组。

链接到此函数

getTextExtent(This, Text)

查看源代码
-spec getTextExtent(This, Text) -> Result
                       when
                           Result ::
                               {Width :: number(),
                                Height :: number(),
                                Descent :: number(),
                                ExternalLeading :: number()},
                           This :: wxGraphicsContext(),
                           Text :: unicode:chardata().

使用当前选定的字体获取字符串的尺寸。

-spec getTransform(This) -> wxGraphicsMatrix:wxGraphicsMatrix() when This :: wxGraphicsContext().

获取此上下文的当前变换矩阵。

-spec resetClip(This) -> ok when This :: wxGraphicsContext().

将裁剪重置为原始形状。

-spec rotate(This, Angle) -> ok when This :: wxGraphicsContext(), Angle :: number().

旋转当前的变换矩阵(以弧度为单位)。

链接到此函数

scale(This, XScale, YScale)

查看源代码
-spec scale(This, XScale, YScale) -> ok
               when This :: wxGraphicsContext(), XScale :: number(), YScale :: number().

缩放当前的变换矩阵。

-spec setBrush(This, Brush) -> ok
                  when
                      This :: wxGraphicsContext(),
                      Brush :: wxGraphicsBrush:wxGraphicsBrush() | wxBrush:wxBrush().

设置用于填充路径的画刷。

-spec setFont(This, Font) -> ok
                 when This :: wxGraphicsContext(), Font :: wxGraphicsFont:wxGraphicsFont().

设置用于绘制文本的字体。

链接到此函数

setFont(This, Font, Colour)

查看源代码
-spec setFont(This, Font, Colour) -> ok
                 when This :: wxGraphicsContext(), Font :: wxFont:wxFont(), Colour :: wx:wx_colour().

设置用于绘制文本的字体。

注意:对于 Direct2D,只能使用 TrueType 字体。

-spec setPen(This, Pen) -> ok
                when This :: wxGraphicsContext(), Pen :: wxPen:wxPen() | wxGraphicsPen:wxGraphicsPen().

设置用于描边的画笔。

链接到此函数

setTransform(This, Matrix)

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

设置此上下文的当前变换矩阵。

链接到此函数

strokeLine(This, X1, Y1, X2, Y2)

查看源代码
-spec strokeLine(This, X1, Y1, X2, Y2) -> ok
                    when
                        This :: wxGraphicsContext(),
                        X1 :: number(),
                        Y1 :: number(),
                        X2 :: number(),
                        Y2 :: number().

描绘一条直线。

链接到此函数

strokeLines(This, Points)

查看源代码
-spec strokeLines(This, Points) -> ok
                     when This :: wxGraphicsContext(), Points :: [{X :: float(), Y :: float()}].

描绘连接所有点的线。

与此函数的其他重载不同,此方法绘制的是一条折线,而不是一些不相连的线。

链接到此函数

strokePath(This, Path)

查看源代码
-spec strokePath(This, Path) -> ok
                    when This :: wxGraphicsContext(), Path :: wxGraphicsPath:wxGraphicsPath().

使用当前画笔沿路径描边。

链接到此函数

translate(This, Dx, Dy)

查看源代码
-spec translate(This, Dx, Dy) -> ok when This :: wxGraphicsContext(), Dx :: number(), Dy :: number().

平移当前的变换矩阵。