查看源代码 wxDC (wx v2.4.3)
wxDC
是一个 "设备上下文"
,可以在其上绘制图形和文本。
它旨在表示不同的输出设备,并为在任何设备上绘图提供通用的抽象 API。
wxWidgets 提供了一个基于现代绘图后端 GDI+、CoreGraphics、Cairo 和 Direct2D 的替代绘图 API。 请参阅 wxGraphicsContext
、wxGraphicsRenderer
和相关类。 还有一个 wxGCDC
,通过在 wxGraphicsContext
之上提供 wxDC
API 来链接 API。
wxDC
是一个抽象基类,不能直接创建。 请使用 wxPaintDC
、wxClientDC
、wxWindowDC
、wxScreenDC
、wxMemoryDC
或 wxPrinterDC
(在 wx 中未实现)。 请注意,与窗口关联的设备上下文(即 wxClientDC
、wxWindowDC
和 wxPaintDC
)默认使用窗口字体和颜色(从 wxWidgets 2.9.0 开始),但其他设备上下文类使用系统默认值,因此您始终必须在使用它们之前设置适当的字体和颜色。
除了下面文档中记录的方法版本外,还有接受单个 {X,Y} 参数而不是两个 wxCoord 参数的版本,或者接受 {X,Y} 和 {Width,Height} 而不是四个 wxCoord 参数的版本。
从 wxWidgets 2.9.0 开始,整个 wxDC
代码已重新组织。所有平台相关的代码(实际上是所有绘图代码)都已移至派生自公共 wxDCImpl 类的后端类中。 用户可见的类(如 wxClientDC
和 wxPaintDC
)只是将所有调用转发到后端实现。
设备和逻辑单位
在 wxDC
上下文中,逻辑
单位和 设备
单位之间存在区别。
设备
单位是特定设备的原生单位;例如,对于屏幕,设备单位是 像素
。 对于打印机,设备单位由打印机的分辨率定义(通常以 DPI:
每英寸点数给出)。
除非明确声明,否则所有 wxDC
函数都使用 逻辑
单位。 逻辑单位是使用当前映射模式(请参阅 setMapMode/2
)映射到设备单位的任意单位。
此机制允许重用相同的代码,例如在屏幕上的窗口上打印到例如纸张上打印。
对透明度/Alpha 通道的支持
通常,wxDC
方法不支持 alpha 透明度,并且 wx_color()
的 alpha 分量被简单地忽略,您需要使用 wxGraphicsContext
来获得完全的透明度支持。 然而,也有一些例外:首先,在 macOS 和 GTK+ 3 下,所有正常的 wxDC 派生类都支持带有 alpha 通道的颜色,因为它们在内部使用 wxGraphicsContext
。 其次,在所有平台上,wxSVGFileDC
(在 wx 中未实现)也完全支持 alpha 通道。 在这两种情况下,从 wx_color()
构建的 wxPen
或 wxBrush
实例在描边或填充时都使用颜色的 alpha 值。
对变换矩阵的支持
在某些平台(目前在 MSW、GTK+ 3、macOS 下)上,wxDC
支持将任意仿射变换矩阵应用于其坐标系(自 3.1.1 起,所有端口上的 wxGCDC
也支持此功能)。 调用 CanUseTransformMatrix()
(在 wx 中未实现)来检查是否可以使用此支持,如果可以使用,则调用 SetTransformMatrix()
(在 wx 中未实现)。 如果不支持变换矩阵,则 SetTransformMatrix()
(在 wx 中未实现)始终只是简单地返回 false
且不执行任何操作。
仅当启用 wxUSE_DC_TRANSFORM_MATRIX
构建选项时,此功能才可用。
参见
wxWidgets 文档:wxDC
摘要
函数
从源 DC 复制到此 DC。
使用当前背景画刷清除设备上下文。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
销毁当前剪切区域,以便不剪切 DC 的任何部分。
使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备
X 坐标转换为逻辑坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备
X 坐标转换为相对逻辑坐标。
使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备
Y 坐标转换为逻辑坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备
Y 坐标转换为相对逻辑坐标。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
使用大小为 n
的点数组绘制直线,并添加可选的偏移坐标。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
使用大小为 n
的点数组绘制填充的多边形,并添加可选的偏移坐标。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
结束文档(仅在输出到打印机时相关)。
结束文档页面(仅在输出到打印机时相关)。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
获取用于绘制背景的画刷。
返回当前的背景模式:wxPENSTYLE\_SOLID
或 wxPENSTYLE\_TRANSPARENT
。
获取当前画刷。
获取当前设置的字体的字符高度。
获取当前设置的字体的平均字符宽度。
获取当前剪切区域周围的矩形。 如果未设置剪切区域,则此函数返回设备上下文的范围。 @remarks 剪切区域以逻辑坐标给出。 @param x 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域左上角的逻辑水平坐标,否则填充 0。 @param y 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域左上角的逻辑垂直坐标,否则填充 0。 @param width 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域的宽度,否则填充设备上下文宽度。 @param height 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域的高度,否则填充设备上下文高度。
获取当前字体。
获取设备上下文的当前布局方向。
获取当前的逻辑函数。
获取设备上下文的当前映射模式。
使用当前选择的字体获取字符串的尺寸。
使用当前选择的字体获取字符串的尺寸。
用从 text
的开头到 text
的相应字符的宽度填充 widths
数组。
获取当前画笔。
在 colour
中获取指定位置的颜色。
返回设备的每英寸像素分辨率。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
获取当前文本背景颜色。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
使用当前选择的字体获取字符串的尺寸。
获取当前文本前景色。
获取当前用户比例因子。
使用径向渐变填充由 rect 指定的区域,从圆心的 initialColour
开始,并在外圆上淡化为 destColour
。
使用径向渐变填充由 rect 指定的区域,从圆心的 initialColour
开始,并在外圆上淡化为 destColour
。
使用线性渐变填充由 rect
指定的区域,从 initialColour
开始,并最终淡化为 destColour
。
如果 DC 可以使用,则返回 true。
使用当前的映射模式、用户比例因子、设备原点和轴方向将逻辑 X 坐标转换为设备坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将逻辑 X 坐标转换为相对设备坐标。
使用当前的映射模式、用户比例因子、设备原点和轴方向,将逻辑 Y 坐标转换为设备坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将逻辑 Y 坐标转换为相对设备坐标。
获取到目前为止绘图命令中使用的最大水平范围。
获取到目前为止绘图命令中使用的最大垂直范围。
获取到目前为止绘图命令中使用的最小水平范围。
获取到目前为止绘图命令中使用的最小垂直范围。
重置边界框:调用此函数后,边界框不包含任何内容。
设置 x 轴和 y 轴的方向(即轴上从最低值到最高值的方向)。
设置 DC 的当前背景画刷。
mode
可以是 wxPENSTYLE_SOLID
和 wxPENSTYLE_TRANSPARENT
之一。
设置 DC 的当前画刷。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
设置设备原点(即应用缩放后的像素原点)。
设置 DC 的当前字体。
设置设备上下文的当前布局方向。
设置设备上下文的当前逻辑函数。
设备上下文的映射模式定义了用于将 logical
单位转换为 device
单位的度量单位。
如果这是一个窗口 DC 或内存 DC,则将给定的调色板分配给与 DC 关联的窗口或位图。
设置 DC 的当前画笔。
设置 DC 的当前文本背景颜色。
设置 DC 的当前文本前景色。
设置用户比例因子,对于需要“缩放”的应用程序很有用。
开始文档(仅在输出到打印机时相关)。
开始文档页(仅在输出到打印机时相关)。
类型
-type wxDC() :: wx:wx_object().
函数
-spec blit(This, Dest, Size, Source, Src, [Option]) -> boolean() when This :: wxDC(), Dest :: {X :: integer(), Y :: integer()}, Size :: {W :: integer(), H :: integer()}, Source :: wxDC(), Src :: {X :: integer(), Y :: integer()}, Option :: {rop, wx:wx_enum()} | {useMask, boolean()} | {srcPtMask, {X :: integer(), Y :: integer()}}.
从源 DC 复制到此 DC。
使用此方法,您可以指定目标坐标和要复制的区域大小,源 DC 和目标 DC 的大小将相同。如果需要在复制时应用缩放,请使用 StretchBlit()
(在 wx 中未实现)。
请注意,源 DC 坐标 xsrc
和 ysrc
使用当前的源 DC 坐标系进行解释,即在将其转换为物理(像素)坐标时会考虑比例、原点位置和轴方向。
备注:在 X 下,wxPostScriptDC
中部分支持 blit/6
。
参见
-spec clear(This) -> ok when This :: wxDC().
使用当前背景画刷清除设备上下文。
请注意,必须使用 setBackground/2
方法来设置 clear/1
使用的画刷,setBrush/2
设置的用于填充形状的画刷会被忽略。
如果没有设置背景画刷,则使用纯白色画刷清除设备上下文。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec destroyClippingRegion(This) -> ok when This :: wxDC().
销毁当前剪切区域,以便不剪切 DC 的任何部分。
使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备
X 坐标转换为逻辑坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备
X 坐标转换为相对逻辑坐标。
例如,使用此方法转换宽度。
使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备
Y 坐标转换为逻辑坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备
Y 坐标转换为相对逻辑坐标。
例如,使用此方法转换高度。
-spec drawArc(This, PtStart, PtEnd, Centre) -> ok when This :: wxDC(), PtStart :: {X :: integer(), Y :: integer()}, PtEnd :: {X :: integer(), Y :: integer()}, Centre :: {X :: integer(), Y :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawBitmap(This, Bmp, Pt) -> ok when This :: wxDC(), Bmp :: wxBitmap:wxBitmap(), Pt :: {X :: integer(), Y :: integer()}.
-spec drawBitmap(This, Bmp, Pt, [Option]) -> ok when This :: wxDC(), Bmp :: wxBitmap:wxBitmap(), Pt :: {X :: integer(), Y :: integer()}, Option :: {useMask, boolean()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawCheckMark(This, Rect) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawCircle(This, Pt, Radius) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Radius :: integer().
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawEllipse(This, Rect) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawEllipse(This, Pt, Size) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Size :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawEllipticArc(This, Pt, Sz, Sa, Ea) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Sz :: {W :: integer(), H :: integer()}, Sa :: number(), Ea :: number().
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawIcon(This, Icon, Pt) -> ok when This :: wxDC(), Icon :: wxIcon:wxIcon(), Pt :: {X :: integer(), Y :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawLabel(This, Text, Rect, [Option]) -> ok when This :: wxDC(), Text :: unicode:chardata(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, Option :: {alignment, integer()} | {indexAccel, integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawLine(This, Pt1, Pt2) -> ok when This :: wxDC(), Pt1 :: {X :: integer(), Y :: integer()}, Pt2 :: {X :: integer(), Y :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawLines(This, Points, [Option]) -> ok when This :: wxDC(), Points :: [{X :: integer(), Y :: integer()}], Option :: {xoffset, integer()} | {yoffset, integer()}.
使用大小为 n
的点数组绘制直线,并添加可选的偏移坐标。
当前画笔用于绘制线条。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawPolygon(This, Points, [Option]) -> ok when This :: wxDC(), Points :: [{X :: integer(), Y :: integer()}], Option :: {xoffset, integer()} | {yoffset, integer()} | {fillStyle, wx:wx_enum()}.
使用大小为 n
的点数组绘制填充的多边形,并添加可选的偏移坐标。
第一个和最后一个点会自动闭合。
最后一个参数指定填充规则:wxODDEVEN_RULE
(默认值)或 wxWINDING_RULE
。
当前画笔用于绘制轮廓,当前画刷用于填充形状。使用透明画刷会抑制填充。
-spec drawRectangle(This, Rect) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawRectangle(This, Pt, Sz) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Sz :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawRotatedText(This, Text, Point, Angle) -> ok when This :: wxDC(), Text :: unicode:chardata(), Point :: {X :: integer(), Y :: integer()}, Angle :: number().
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawRoundedRectangle(This, Rect, Radius) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, Radius :: number().
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawRoundedRectangle(This, Pt, Sz, Radius) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Sz :: {W :: integer(), H :: integer()}, Radius :: number().
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec drawText(This, Text, Pt) -> ok when This :: wxDC(), Text :: unicode:chardata(), Pt :: {X :: integer(), Y :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec endDoc(This) -> ok when This :: wxDC().
结束文档(仅在输出到打印机时相关)。
-spec endPage(This) -> ok when This :: wxDC().
结束文档页面(仅在输出到打印机时相关)。
-spec floodFill(This, Pt, Col) -> boolean() when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Col :: wx:wx_colour().
-spec floodFill(This, Pt, Col, [Option]) -> boolean() when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Col :: wx:wx_colour(), Option :: {style, wx:wx_enum()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec getBackground(This) -> wxBrush:wxBrush() when This :: wxDC().
获取用于绘制背景的画刷。
返回当前的背景模式:wxPENSTYLE\_SOLID
或 wxPENSTYLE\_TRANSPARENT
。
-spec getBrush(This) -> wxBrush:wxBrush() when This :: wxDC().
获取当前画刷。
参见:setBrush/2
获取当前设置的字体的字符高度。
获取当前设置的字体的平均字符宽度。
-spec getClippingBox(This) -> Result when Result :: {X :: integer(), Y :: integer(), Width :: integer(), Height :: integer()}, This :: wxDC().
获取当前剪切区域周围的矩形。 如果未设置剪切区域,则此函数返回设备上下文的范围。 @remarks 剪切区域以逻辑坐标给出。 @param x 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域左上角的逻辑水平坐标,否则填充 0。 @param y 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域左上角的逻辑垂直坐标,否则填充 0。 @param width 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域的宽度,否则填充设备上下文宽度。 @param height 如果非 <span class='literal'>NULL</span>,则在函数返回 true 时,填充剪切区域的高度,否则填充设备上下文高度。
返回:如果存在剪切区域则返回 true,如果不存在活动剪切区域则返回 false(请注意,此返回值仅自 wxWidgets 3.1.2 起可用,此函数在以前的版本中不返回任何内容)。
-spec getFont(This) -> wxFont:wxFont() when This :: wxDC().
获取当前字体。
请注意,即使每个设备上下文对象在创建后都有一些默认字体,此方法最初也会返回 ?wxNullFont,并且只有在调用 setFont/2
后才会返回有效的字体。
-spec getLayoutDirection(This) -> wx:wx_enum() when This :: wxDC().
获取设备上下文的当前布局方向。
在支持 RTL 布局的平台上,返回值将为 wxLayout_LeftToRight
或 wxLayout_RightToLeft
。如果不支持 RTL 布局,则返回值将为 wxLayout_Default
。
-spec getLogicalFunction(This) -> wx:wx_enum() when This :: wxDC().
获取当前的逻辑函数。
-spec getMapMode(This) -> wx:wx_enum() when This :: wxDC().
获取设备上下文的当前映射模式。
参见:setMapMode/2
-spec getMultiLineTextExtent(This, String) -> {W :: integer(), H :: integer()} when This :: wxDC(), String :: unicode:chardata().
使用当前选择的字体获取字符串的尺寸。
string
是要测量的文本字符串。
返回:文本范围,以 {Width, Height} 对象的形式表示。
注意:此函数适用于单行和多行字符串。
参见
-spec getMultiLineTextExtent(This, String, [Option]) -> {W :: integer(), H :: integer(), HeightLine :: integer()} when This :: wxDC(), String :: unicode:chardata(), Option :: {font, wxFont:wxFont()}.
使用当前选择的字体获取字符串的尺寸。
string
是要测量的文本字符串,如果 heightLine
非 NULL,则在此处存储单行的高度。
文本范围设置在给定的 w
和 h
指针中。
如果指定了可选参数 font
且有效,则将其用于文本范围计算,否则使用当前选定的字体。
如果 string
为空,则其水平范围为 0,但为了方便起见,当使用此函数为可能的多行字符串分配足够的空间时,其垂直范围与空文本行的高度相同。请注意,此行为与 getTextExtent/3
的行为不同。
注意:此函数适用于单行和多行字符串。
参见
-spec getPartialTextExtents(This, Text) -> Result when Result :: {Res :: boolean(), Widths :: [integer()]}, This :: wxDC(), Text :: unicode:chardata().
用从 text
的开头到 text
的相应字符的宽度填充 widths
数组。
通用版本只是使用 getTextExtent/3
构建每个字符宽度的运行总计,但是如果各种平台具有比通用实现更快或更准确的本机 API 函数,则应改用该函数。
参见
-spec getPen(This) -> wxPen:wxPen() when This :: wxDC().
获取当前画笔。
参见:setPen/2
-spec getPixel(This, Pos) -> Result when Result :: {Res :: boolean(), Colour :: wx:wx_colour4()}, This :: wxDC(), Pos :: {X :: integer(), Y :: integer()}.
在 colour
中获取指定位置的颜色。
此方法不适用于 wxPostScriptDC
或 wxMetafileDC
(在 wx 中未实现),也不适用于 wxOSX 端口中的任何 DC,并且在那里只会返回 false。
注意:可以使用 drawPoint/2
设置像素。
注意:不应将此方法与 wxPaintDC
一起使用,因为在绘制时访问 DC 可能会导致意外的结果,尤其是在 wxGTK 中。
返回设备的每英寸像素分辨率。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec getTextBackground(This) -> wx:wx_colour4() when This :: wxDC().
获取当前文本背景颜色。
-spec getTextExtent(This, String) -> {W :: integer(), H :: integer()} when This :: wxDC(), String :: unicode:chardata().
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec getTextExtent(This, String, [Option]) -> Result when Result :: {W :: integer(), H :: integer(), Descent :: integer(), ExternalLeading :: integer()}, This :: wxDC(), String :: unicode:chardata(), Option :: {theFont, wxFont:wxFont()}.
使用当前选择的字体获取字符串的尺寸。
string
是要测量的文本字符串,descent
是从字体基线到下降线底部的尺寸,externalLeading
是字体设计器添加到字体的任何额外垂直空间(通常为零)。
文本范围在 w
和 h
指针中返回,或者根据使用此函数的哪个版本,以 {Width, Height} 对象的形式返回。
如果指定了可选参数 font
且有效,则将其用于文本范围计算。否则,使用当前选定的字体。
如果 string
为空,则其在两个方向上的范围均为 0,如预期。
注意:此函数仅适用于单行字符串。
参见
-spec getTextForeground(This) -> wx:wx_colour4() when This :: wxDC().
获取当前文本前景色。
获取当前用户比例因子。
-spec gradientFillConcentric(This, Rect, InitialColour, DestColour) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, InitialColour :: wx:wx_colour(), DestColour :: wx:wx_colour().
使用径向渐变填充由 rect 指定的区域,从圆心的 initialColour
开始,并在外圆上淡化为 destColour
。
圆放置在 rect
的中心。
注意:当前此函数非常慢,请勿将其用于实时绘图。
-spec gradientFillConcentric(This, Rect, InitialColour, DestColour, CircleCenter) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, InitialColour :: wx:wx_colour(), DestColour :: wx:wx_colour(), CircleCenter :: {X :: integer(), Y :: integer()}.
使用径向渐变填充由 rect 指定的区域,从圆心的 initialColour
开始,并在外圆上淡化为 destColour
。
circleCenter
是指定 rect
中圆的中心的相对坐标。
注意:当前此函数非常慢,请勿将其用于实时绘图。
-spec gradientFillLinear(This, Rect, InitialColour, DestColour) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, InitialColour :: wx:wx_colour(), DestColour :: wx:wx_colour().
等效于 gradientFillLinear(This, Rect, InitialColour, DestColour, [])
。
-spec gradientFillLinear(This, Rect, InitialColour, DestColour, [Option]) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}, InitialColour :: wx:wx_colour(), DestColour :: wx:wx_colour(), Option :: {nDirection, wx:wx_enum()}.
使用线性渐变填充由 rect
指定的区域,从 initialColour
开始,并最终淡化为 destColour
。
nDirection
指定颜色变化的方向,默认是在矩形的左侧使用 initialColour
,在右侧使用 destColour
。
如果 DC 可以使用,则返回 true。
使用当前的映射模式、用户比例因子、设备原点和轴方向将逻辑 X 坐标转换为设备坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将逻辑 X 坐标转换为相对设备坐标。
例如,使用此方法转换宽度。
使用当前的映射模式、用户比例因子、设备原点和轴方向,将逻辑 Y 坐标转换为设备坐标。
使用当前的映射模式和用户比例因子,但忽略轴方向,将逻辑 Y 坐标转换为相对设备坐标。
例如,使用此方法转换高度。
获取到目前为止绘图命令中使用的最大水平范围。
获取到目前为止绘图命令中使用的最大垂直范围。
获取到目前为止绘图命令中使用的最小水平范围。
获取到目前为止绘图命令中使用的最小垂直范围。
-spec resetBoundingBox(This) -> ok when This :: wxDC().
重置边界框:调用此函数后,边界框不包含任何内容。
-spec setAxisOrientation(This, XLeftRight, YBottomUp) -> ok when This :: wxDC(), XLeftRight :: boolean(), YBottomUp :: boolean().
设置 x 轴和 y 轴的方向(即轴上从最低值到最高值的方向)。
默认方向为 x 轴从左到右,y 轴从上到下。
-spec setBackground(This, Brush) -> ok when This :: wxDC(), Brush :: wxBrush:wxBrush().
设置 DC 的当前背景画刷。
mode
可以是 wxPENSTYLE_SOLID
和 wxPENSTYLE_TRANSPARENT
之一。
此设置确定是否使用背景颜色绘制文本。
-spec setBrush(This, Brush) -> ok when This :: wxDC(), Brush :: wxBrush:wxBrush().
设置 DC 的当前画刷。
如果参数为 ?wxNullBrush(或其他无效画刷;请参见 wxBrush:isOk/1
),则将当前画刷从设备上下文中选出(使 wxDC
不具有任何有效画刷),从而可以安全地销毁当前画刷。
参见
-spec setClippingRegion(This, Rect) -> ok when This :: wxDC(), Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
-spec setClippingRegion(This, Pt, Sz) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Sz :: {W :: integer(), H :: integer()}.
这是一个重载的成员函数,为了方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
设置设备原点(即应用缩放后的像素原点)。
此函数在 Windows 打印操作中用于在页面上放置图形时非常有用。
-spec setFont(This, Font) -> ok when This :: wxDC(), Font :: wxFont:wxFont().
设置 DC 的当前字体。
如果参数为 ?wxNullFont(或其他无效字体;请参见 wxFont:isOk/1
),则将当前字体从设备上下文中选出(使 wxDC
不具有任何有效字体),从而可以安全地销毁当前字体。
参见:wxFont
-spec setLayoutDirection(This, Dir) -> ok when This :: wxDC(), Dir :: wx:wx_enum().
设置设备上下文的当前布局方向。
-spec setLogicalFunction(This, Function) -> ok when This :: wxDC(), Function :: wx:wx_enum().
设置设备上下文的当前逻辑函数。
注意:由于底层绘图模型的限制,并非所有端口都完全支持此功能。值得注意的是,过去通常用于绘制橡皮筋或其他移动轮廓的 wxINVERT
不会,也不会在 wxGTK3 和 wxMac 中支持。建议的替代方法是正常绘制临时对象,并刷新窗口的(受影响的部分)以稍后删除它们。
它确定 source
像素(来自画笔或画刷颜色,或者如果使用 blit/6
则来自源设备上下文)如何与当前设备上下文中的 destination
像素组合。文本绘制不受此函数的影响。
有关更多信息,请参见 ?wxRasterOperationMode 枚举值。
默认值为 wxCOPY
,它只是使用当前颜色进行绘制。其他选项使用逻辑运算组合当前颜色和背景。
-spec setMapMode(This, Mode) -> ok when This :: wxDC(), Mode :: wx:wx_enum().
设备上下文的映射模式定义了用于将 logical
单位转换为 device
单位的度量单位。
请注意,在 X 中,文本绘制与映射模式的处理不一致;字体始终以磅值指定。但是,设置用户比例(请参见 setUserScale/3
)会适当地缩放文本。在 Windows 中,始终使用可缩放的 TrueType 字体;在 X 中,结果取决于字体的可用性,但通常会找到合理的匹配项。
坐标原点始终位于屏幕/打印机的左上角。
绘制到 Windows 打印机设备上下文使用当前的映射模式,但当前对于 PostScript 输出会忽略映射模式。
-spec setPalette(This, Palette) -> ok when This :: wxDC(), Palette :: wxPalette:wxPalette().
如果这是一个窗口 DC 或内存 DC,则将给定的调色板分配给与 DC 关联的窗口或位图。
如果参数为 ?wxNullPalette,则将当前调色板从设备上下文中选出,并恢复原始调色板。
参见:wxPalette
-spec setPen(This, Pen) -> ok when This :: wxDC(), Pen :: wxPen:wxPen().
设置 DC 的当前画笔。
如果参数是 ?wxNullPen (或另一个无效的画笔;请参阅 wxPen:isOk/1
),则当前画笔会从设备上下文中选出(使 wxDC
不再拥有任何有效的画笔),从而可以安全地销毁当前画笔。
另请参阅:wxMemoryDC
-spec setTextBackground(This, Colour) -> ok when This :: wxDC(), Colour :: wx:wx_colour().
设置 DC 的当前文本背景颜色。
-spec setTextForeground(This, Colour) -> ok when This :: wxDC(), Colour :: wx:wx_colour().
设置 DC 的当前文本前景色。
另请参阅:wxMemoryDC
-spec setUserScale(This, XScale, YScale) -> ok when This :: wxDC(), XScale :: number(), YScale :: number().
设置用户比例因子,对于需要“缩放”的应用程序很有用。
-spec startDoc(This, Message) -> boolean() when This :: wxDC(), Message :: unicode:chardata().
开始文档(仅在输出到打印机时相关)。
message
是打印时显示的消息。
-spec startPage(This) -> ok when This :: wxDC().
开始文档页(仅在输出到打印机时相关)。