查看源代码 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
。如果生成的裁剪区域为空,则会裁剪掉上下文上的所有绘图(绘制操作所做的所有更改都会被屏蔽掉)。
-spec clip(This, X, Y, W, H) -> ok when This :: wxGraphicsContext(), X :: number(), Y :: number(), W :: number(), H :: number().
这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。
-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
。
-spec createBrush(This, Brush) -> wxGraphicsBrush:wxGraphicsBrush() when This :: wxGraphicsContext(), Brush :: wxBrush:wxBrush().
从 wxBrush
创建一个原生画刷。
-spec createFont(This, Font) -> wxGraphicsFont:wxGraphicsFont() when This :: wxGraphicsContext(), Font :: wxFont:wxFont().
-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
-spec createLinearGradientBrush(This, X1, Y1, X2, Y2, Stops) -> wxGraphicsBrush:wxGraphicsBrush() when This :: wxGraphicsContext(), X1 :: number(), Y1 :: number(), X2 :: number(), Y2 :: number(), Stops :: wxGraphicsGradientStops:wxGraphicsGradientStops().
这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。
-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().
-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 中未实现),因为仅为了将其传递给此方法而构造一个是浪费的。
-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().
这是一个为了方便而提供的重载成员函数。它与上述函数的不同之处仅在于它接受的参数。
-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.
销毁对象
-spec drawBitmap(This, Bmp, X, Y, W, H) -> ok when This :: wxGraphicsContext(), Bmp :: wxBitmap:wxBitmap(), X :: number(), Y :: number(), W :: number(), H :: number().
绘制位图。
对于单色位图,这被视为蒙版,并使用当前画刷进行填充。
-spec drawEllipse(This, X, Y, W, H) -> ok when This :: wxGraphicsContext(), X :: number(), Y :: number(), W :: number(), H :: number().
绘制椭圆。
-spec drawIcon(This, Icon, X, Y, W, H) -> ok when This :: wxGraphicsContext(), Icon :: wxIcon:wxIcon(), X :: number(), Y :: number(), W :: number(), H :: number().
绘制图标。
-spec drawLines(This, Points) -> ok when This :: wxGraphicsContext(), Points :: [{X :: float(), Y :: float()}].
-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().
-spec drawPath(This, Path, [Option]) -> ok when This :: wxGraphicsContext(), Path :: wxGraphicsPath:wxGraphicsPath(), Option :: {fillStyle, wx:wx_enum()}.
先填充然后描边来绘制路径。
-spec drawRectangle(This, X, Y, W, H) -> ok when This :: wxGraphicsContext(), X :: number(), Y :: number(), W :: number(), H :: number().
绘制矩形。
-spec drawRoundedRectangle(This, X, Y, W, H, Radius) -> ok when This :: wxGraphicsContext(), X :: number(), Y :: number(), W :: number(), H :: number(), Radius :: number().
绘制圆角矩形。
-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().
在定义的位置绘制文本。
-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().
-spec fillPath(This, Path, [Option]) -> ok when This :: wxGraphicsContext(), Path :: wxGraphicsPath:wxGraphicsPath(), Option :: {fillStyle, wx:wx_enum()}.
使用当前画刷填充路径。
-spec getPartialTextExtents(This, Text) -> [number()] when This :: wxGraphicsContext(), Text :: unicode:chardata().
用从 text
的开头到 text
的相应字符的宽度填充 widths
数组。
-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().
旋转当前的变换矩阵(以弧度为单位)。
-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().
设置用于绘制文本的字体。
-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().
设置用于描边的画笔。
-spec setTransform(This, Matrix) -> ok when This :: wxGraphicsContext(), Matrix :: wxGraphicsMatrix:wxGraphicsMatrix().
设置此上下文的当前变换矩阵。
-spec strokeLine(This, X1, Y1, X2, Y2) -> ok when This :: wxGraphicsContext(), X1 :: number(), Y1 :: number(), X2 :: number(), Y2 :: number().
描绘一条直线。
-spec strokeLines(This, Points) -> ok when This :: wxGraphicsContext(), Points :: [{X :: float(), Y :: float()}].
描绘连接所有点的线。
与此函数的其他重载不同,此方法绘制的是一条折线,而不是一些不相连的线。
-spec strokePath(This, Path) -> ok when This :: wxGraphicsContext(), Path :: wxGraphicsPath:wxGraphicsPath().
使用当前画笔沿路径描边。
-spec translate(This, Dx, Dy) -> ok when This :: wxGraphicsContext(), Dx :: number(), Dy :: number().
平移当前的变换矩阵。