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

wxDC 是一个 "设备上下文",可以在其上绘制图形和文本。

它旨在表示不同的输出设备,并为在任何设备上绘图提供通用的抽象 API。

wxWidgets 提供了一个基于现代绘图后端 GDI+、CoreGraphics、Cairo 和 Direct2D 的替代绘图 API。 请参阅 wxGraphicsContextwxGraphicsRenderer 和相关类。 还有一个 wxGCDC,通过在 wxGraphicsContext 之上提供 wxDC API 来链接 API。

wxDC 是一个抽象基类,不能直接创建。 请使用 wxPaintDCwxClientDCwxWindowDCwxScreenDCwxMemoryDCwxPrinterDC(在 wx 中未实现)。 请注意,与窗口关联的设备上下文(即 wxClientDCwxWindowDCwxPaintDC)默认使用窗口字体和颜色(从 wxWidgets 2.9.0 开始),但其他设备上下文类使用系统默认值,因此您始终必须在使用它们之前设置适当的字体和颜色。

除了下面文档中记录的方法版本外,还有接受单个 {X,Y} 参数而不是两个 wxCoord 参数的版本,或者接受 {X,Y} 和 {Width,Height} 而不是四个 wxCoord 参数的版本。

从 wxWidgets 2.9.0 开始,整个 wxDC 代码已重新组织。所有平台相关的代码(实际上是所有绘图代码)都已移至派生自公共 wxDCImpl 类的后端类中。 用户可见的类(如 wxClientDCwxPaintDC)只是将所有调用转发到后端实现。

设备和逻辑单位

wxDC 上下文中,逻辑单位和 设备单位之间存在区别。

设备单位是特定设备的原生单位;例如,对于屏幕,设备单位是 像素。 对于打印机,设备单位由打印机的分辨率定义(通常以 DPI:每英寸点数给出)。

除非明确声明,否则所有 wxDC 函数都使用 逻辑单位。 逻辑单位是使用当前映射模式(请参阅 setMapMode/2)映射到设备单位的任意单位。

此机制允许重用相同的代码,例如在屏幕上的窗口上打印到例如纸张上打印。

对透明度/Alpha 通道的支持

通常,wxDC 方法不支持 alpha 透明度,并且 wx_color() 的 alpha 分量被简单地忽略,您需要使用 wxGraphicsContext 来获得完全的透明度支持。 然而,也有一些例外:首先,在 macOS 和 GTK+ 3 下,所有正常的 wxDC 派生类都支持带有 alpha 通道的颜色,因为它们在内部使用 wxGraphicsContext。 其次,在所有平台上,wxSVGFileDC(在 wx 中未实现)也完全支持 alpha 通道。 在这两种情况下,从 wx_color() 构建的 wxPenwxBrush 实例在描边或填充时都使用颜色的 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。

将指定的点添加到可以使用 minX/1maxX/1minY/1maxY/1 函数检索的边界框。

使用当前背景画刷清除设备上下文。

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

销毁当前剪切区域,以便不剪切 DC 的任何部分。

使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备 X 坐标转换为逻辑坐标。

使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备 X 坐标转换为相对逻辑坐标。

使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备 Y 坐标转换为逻辑坐标。

使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备 Y 坐标转换为相对逻辑坐标。

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

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

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

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

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

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

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

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

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

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

使用大小为 n 的点数组绘制直线,并添加可选的偏移坐标。

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

使用大小为 n 的点数组绘制填充的多边形,并添加可选的偏移坐标。

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

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

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

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

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

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

结束文档(仅在输出到打印机时相关)。

结束文档页面(仅在输出到打印机时相关)。

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

获取用于绘制背景的画刷。

返回当前的背景模式:wxPENSTYLE\_SOLIDwxPENSTYLE\_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_SOLIDwxPENSTYLE_TRANSPARENT 之一。

设置 DC 的当前画刷。

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

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

设置设备原点(即应用缩放后的像素原点)。

设置 DC 的当前字体。

设置设备上下文的当前布局方向。

设置设备上下文的当前逻辑函数。

设备上下文的映射模式定义了用于将 logical 单位转换为 device 单位的度量单位。

如果这是一个窗口 DC 或内存 DC,则将给定的调色板分配给与 DC 关联的窗口或位图。

设置 DC 的当前画笔。

设置 DC 的当前文本背景颜色。

设置 DC 的当前文本前景色。

设置用户比例因子,对于需要“缩放”的应用程序很有用。

开始文档(仅在输出到打印机时相关)。

开始文档页(仅在输出到打印机时相关)。

类型

函数

链接到此函数

blit(This, Dest, Size, Source, Src)

查看源代码
-spec blit(This, Dest, Size, Source, Src) -> boolean()
              when
                  This :: wxDC(),
                  Dest :: {X :: integer(), Y :: integer()},
                  Size :: {W :: integer(), H :: integer()},
                  Source :: wxDC(),
                  Src :: {X :: integer(), Y :: integer()}.

等效于 blit(This, Dest, Size, Source, Src, [])

-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 坐标 xsrcysrc 使用当前的源 DC 坐标系进行解释,即在将其转换为物理(像素)坐标时会考虑比例、原点位置和轴方向。

备注:在 X 下,wxPostScriptDC 中部分支持 blit/6

参见

链接到此函数

calcBoundingBox(This, X, Y)

查看源代码
-spec calcBoundingBox(This, X, Y) -> ok when This :: wxDC(), X :: integer(), Y :: integer().

将指定的点添加到可以使用 minX/1maxX/1minY/1maxY/1 函数检索的边界框。

参见:resetBoundingBox/1

-spec clear(This) -> ok when This :: wxDC().

使用当前背景画刷清除设备上下文。

请注意,必须使用 setBackground/2 方法来设置 clear/1 使用的画刷,setBrush/2 设置的用于填充形状的画刷会被忽略。

如果没有设置背景画刷,则使用纯白色画刷清除设备上下文。

-spec crossHair(This, Pt) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}.

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

链接到此函数

destroyClippingRegion(This)

查看源代码
-spec destroyClippingRegion(This) -> ok when This :: wxDC().

销毁当前剪切区域,以便不剪切 DC 的任何部分。

参见:setClippingRegion/3

链接到此函数

deviceToLogicalX(This, X)

查看源代码
-spec deviceToLogicalX(This, X) -> integer() when This :: wxDC(), X :: integer().

使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备 X 坐标转换为逻辑坐标。

链接到此函数

deviceToLogicalXRel(This, X)

查看源代码
-spec deviceToLogicalXRel(This, X) -> integer() when This :: wxDC(), X :: integer().

使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备 X 坐标转换为相对逻辑坐标。

例如,使用此方法转换宽度。

链接到此函数

deviceToLogicalY(This, Y)

查看源代码
-spec deviceToLogicalY(This, Y) -> integer() when This :: wxDC(), Y :: integer().

使用当前的映射模式、用户比例因子、设备原点和轴方向将 设备 Y 坐标转换为逻辑坐标。

链接到此函数

deviceToLogicalYRel(This, Y)

查看源代码
-spec deviceToLogicalYRel(This, Y) -> integer() when This :: wxDC(), Y :: integer().

使用当前的映射模式和用户比例因子,但忽略轴方向,将 设备 Y 坐标转换为相对逻辑坐标。

例如,使用此方法转换高度。

链接到此函数

drawArc(This, PtStart, PtEnd, Centre)

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

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

链接到此函数

drawBitmap(This, Bmp, Pt)

查看源代码
-spec drawBitmap(This, Bmp, Pt) -> ok
                    when
                        This :: wxDC(),
                        Bmp :: wxBitmap:wxBitmap(),
                        Pt :: {X :: integer(), Y :: integer()}.

等效于 drawBitmap(This, Bmp, Pt, [])

-spec drawBitmap(This, Bmp, Pt, [Option]) -> ok
                    when
                        This :: wxDC(),
                        Bmp :: wxBitmap:wxBitmap(),
                        Pt :: {X :: integer(), Y :: integer()},
                        Option :: {useMask, boolean()}.

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

链接到此函数

drawCheckMark(This, Rect)

查看源代码
-spec drawCheckMark(This, Rect) -> ok
                       when
                           This :: wxDC(),
                           Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.

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

链接到此函数

drawCircle(This, Pt, Radius)

查看源代码
-spec drawCircle(This, Pt, Radius) -> ok
                    when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Radius :: integer().

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

链接到此函数

drawEllipse(This, Rect)

查看源代码
-spec drawEllipse(This, Rect) -> ok
                     when
                         This :: wxDC(),
                         Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.

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

链接到此函数

drawEllipse(This, Pt, Size)

查看源代码
-spec drawEllipse(This, Pt, Size) -> ok
                     when
                         This :: wxDC(),
                         Pt :: {X :: integer(), Y :: integer()},
                         Size :: {W :: integer(), H :: integer()}.

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

链接到此函数

drawEllipticArc(This, Pt, Sz, Sa, Ea)

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

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

链接到此函数

drawIcon(This, Icon, Pt)

查看源代码
-spec drawIcon(This, Icon, Pt) -> ok
                  when This :: wxDC(), Icon :: wxIcon:wxIcon(), Pt :: {X :: integer(), Y :: integer()}.

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

链接到此函数

drawLabel(This, Text, Rect)

查看源代码
-spec drawLabel(This, Text, Rect) -> ok
                   when
                       This :: wxDC(),
                       Text :: unicode:chardata(),
                       Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.

等效于 drawLabel(This, Text, Rect, [])

-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()}.

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

链接到此函数

drawLine(This, Pt1, Pt2)

查看源代码
-spec drawLine(This, Pt1, Pt2) -> ok
                  when
                      This :: wxDC(),
                      Pt1 :: {X :: integer(), Y :: integer()},
                      Pt2 :: {X :: integer(), Y :: integer()}.

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

链接到此函数

drawLines(This, Points)

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

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

-spec drawLines(This, Points, [Option]) -> ok
                   when
                       This :: wxDC(),
                       Points :: [{X :: integer(), Y :: integer()}],
                       Option :: {xoffset, integer()} | {yoffset, integer()}.

使用大小为 n 的点数组绘制直线,并添加可选的偏移坐标。

当前画笔用于绘制线条。

-spec drawPoint(This, Pt) -> ok when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}.

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

链接到此函数

drawPolygon(This, Points)

查看源代码
-spec drawPolygon(This, Points) -> ok when This :: wxDC(), Points :: [{X :: integer(), Y :: integer()}].

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

-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

当前画笔用于绘制轮廓,当前画刷用于填充形状。使用透明画刷会抑制填充。

链接到此函数

drawRectangle(This, Rect)

查看源代码
-spec drawRectangle(This, Rect) -> ok
                       when
                           This :: wxDC(),
                           Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.

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

链接到此函数

drawRectangle(This, Pt, Sz)

查看源代码
-spec drawRectangle(This, Pt, Sz) -> ok
                       when
                           This :: wxDC(),
                           Pt :: {X :: integer(), Y :: integer()},
                           Sz :: {W :: integer(), H :: integer()}.

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

链接到此函数

drawRotatedText(This, Text, Point, Angle)

查看源代码
-spec drawRotatedText(This, Text, Point, Angle) -> ok
                         when
                             This :: wxDC(),
                             Text :: unicode:chardata(),
                             Point :: {X :: integer(), Y :: integer()},
                             Angle :: number().

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

链接到此函数

drawRoundedRectangle(This, Rect, Radius)

查看源代码
-spec drawRoundedRectangle(This, Rect, Radius) -> ok
                              when
                                  This :: wxDC(),
                                  Rect ::
                                      {X :: integer(), Y :: integer(), W :: integer(), H :: integer()},
                                  Radius :: number().

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

链接到此函数

drawRoundedRectangle(This, Pt, Sz, Radius)

查看源代码
-spec drawRoundedRectangle(This, Pt, Sz, Radius) -> ok
                              when
                                  This :: wxDC(),
                                  Pt :: {X :: integer(), Y :: integer()},
                                  Sz :: {W :: integer(), H :: integer()},
                                  Radius :: number().

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

链接到此函数

drawText(This, Text, Pt)

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

结束文档页面(仅在输出到打印机时相关)。

链接到此函数

floodFill(This, Pt, Col)

查看源代码
-spec floodFill(This, Pt, Col) -> boolean()
                   when This :: wxDC(), Pt :: {X :: integer(), Y :: integer()}, Col :: wx:wx_colour().

等效于 floodFill(This, Pt, Col, [])

-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().

获取用于绘制背景的画刷。

参见:setBackground/2

链接到此函数

getBackgroundMode(This)

查看源代码
-spec getBackgroundMode(This) -> integer() when This :: wxDC().

返回当前的背景模式:wxPENSTYLE\_SOLIDwxPENSTYLE\_TRANSPARENT

参见:setBackgroundMode/2

-spec getBrush(This) -> wxBrush:wxBrush() when This :: wxDC().

获取当前画刷。

参见:setBrush/2

-spec getCharHeight(This) -> integer() when This :: wxDC().

获取当前设置的字体的字符高度。

-spec getCharWidth(This) -> integer() when This :: wxDC().

获取当前设置的字体的平均字符宽度。

-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 后才会返回有效的字体。

链接到此函数

getLayoutDirection(This)

查看源代码
-spec getLayoutDirection(This) -> wx:wx_enum() when This :: wxDC().

获取设备上下文的当前布局方向。

在支持 RTL 布局的平台上,返回值将为 wxLayout_LeftToRightwxLayout_RightToLeft。如果不支持 RTL 布局,则返回值将为 wxLayout_Default

参见:getLayoutDirection/1

链接到此函数

getLogicalFunction(This)

查看源代码
-spec getLogicalFunction(This) -> wx:wx_enum() when This :: wxDC().

获取当前的逻辑函数。

参见:setLogicalFunction/2

-spec getMapMode(This) -> wx:wx_enum() when This :: wxDC().

获取设备上下文的当前映射模式。

参见:setMapMode/2

链接到此函数

getMultiLineTextExtent(This, String)

查看源代码
-spec getMultiLineTextExtent(This, String) -> {W :: integer(), H :: integer()}
                                when This :: wxDC(), String :: unicode:chardata().

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

string 是要测量的文本字符串。

返回:文本范围,以 {Width, Height} 对象的形式表示。

注意:此函数适用于单行和多行字符串。

参见

链接到此函数

getMultiLineTextExtent/3

查看源代码
-spec getMultiLineTextExtent(This, String, [Option]) ->
                                {W :: integer(), H :: integer(), HeightLine :: integer()}
                                when
                                    This :: wxDC(),
                                    String :: unicode:chardata(),
                                    Option :: {font, wxFont:wxFont()}.

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

string 是要测量的文本字符串,如果 heightLine 非 NULL,则在此处存储单行的高度。

文本范围设置在给定的 wh 指针中。

如果指定了可选参数 font 且有效,则将其用于文本范围计算,否则使用当前选定的字体。

如果 string 为空,则其水平范围为 0,但为了方便起见,当使用此函数为可能的多行字符串分配足够的空间时,其垂直范围与空文本行的高度相同。请注意,此行为与 getTextExtent/3 的行为不同。

注意:此函数适用于单行和多行字符串。

参见

链接到此函数

getPartialTextExtents(This, Text)

查看源代码
-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 中获取指定位置的颜色。

此方法不适用于 wxPostScriptDCwxMetafileDC(在 wx 中未实现),也不适用于 wxOSX 端口中的任何 DC,并且在那里只会返回 false。

注意:可以使用 drawPoint/2 设置像素。

注意:不应将此方法与 wxPaintDC 一起使用,因为在绘制时访问 DC 可能会导致意外的结果,尤其是在 wxGTK 中。

-spec getPPI(This) -> {W :: integer(), H :: integer()} when This :: wxDC().

返回设备的每英寸像素分辨率。

-spec getSize(This) -> {W :: integer(), H :: integer()} when This :: wxDC().

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

-spec getSizeMM(This) -> {W :: integer(), H :: integer()} when This :: wxDC().

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

链接到此函数

getTextBackground(This)

查看源代码
-spec getTextBackground(This) -> wx:wx_colour4() when This :: wxDC().

获取当前文本背景颜色。

参见:setTextBackground/2

链接到此函数

getTextExtent(This, String)

查看源代码
-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 是字体设计器添加到字体的任何额外垂直空间(通常为零)。

文本范围在 wh 指针中返回,或者根据使用此函数的哪个版本,以 {Width, Height} 对象的形式返回。

如果指定了可选参数 font 且有效,则将其用于文本范围计算。否则,使用当前选定的字体。

如果 string 为空,则其在两个方向上的范围均为 0,如预期。

注意:此函数仅适用于单行字符串。

参见

链接到此函数

getTextForeground(This)

查看源代码
-spec getTextForeground(This) -> wx:wx_colour4() when This :: wxDC().

获取当前文本前景色。

参见:setTextForeground/2

-spec getUserScale(This) -> {X :: number(), Y :: number()} when This :: wxDC().

获取当前用户比例因子。

参见:setUserScale/3

链接到此函数

gradientFillConcentric(This, Rect, InitialColour, DestColour)

查看源代码
-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 的中心。

注意:当前此函数非常慢,请勿将其用于实时绘图。

链接到此函数

gradientFillConcentric(This, Rect, InitialColour, DestColour, CircleCenter)

查看源代码
-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 中圆的中心的相对坐标。

注意:当前此函数非常慢,请勿将其用于实时绘图。

链接到此函数

gradientFillLinear(This, Rect, InitialColour, DestColour)

查看源代码
-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

-spec isOk(This) -> boolean() when This :: wxDC().

如果 DC 可以使用,则返回 true。

链接到此函数

logicalToDeviceX(This, X)

查看源代码
-spec logicalToDeviceX(This, X) -> integer() when This :: wxDC(), X :: integer().

使用当前的映射模式、用户比例因子、设备原点和轴方向将逻辑 X 坐标转换为设备坐标。

链接到此函数

logicalToDeviceXRel(This, X)

查看源代码
-spec logicalToDeviceXRel(This, X) -> integer() when This :: wxDC(), X :: integer().

使用当前的映射模式和用户比例因子,但忽略轴方向,将逻辑 X 坐标转换为相对设备坐标。

例如,使用此方法转换宽度。

链接到此函数

logicalToDeviceY(This, Y)

查看源代码
-spec logicalToDeviceY(This, Y) -> integer() when This :: wxDC(), Y :: integer().

使用当前的映射模式、用户比例因子、设备原点和轴方向,将逻辑 Y 坐标转换为设备坐标。

链接到此函数

logicalToDeviceYRel(This, Y)

查看源代码
-spec logicalToDeviceYRel(This, Y) -> integer() when This :: wxDC(), Y :: integer().

使用当前的映射模式和用户比例因子,但忽略轴方向,将逻辑 Y 坐标转换为相对设备坐标。

例如,使用此方法转换高度。

-spec maxX(This) -> integer() when This :: wxDC().

获取到目前为止绘图命令中使用的最大水平范围。

-spec maxY(This) -> integer() when This :: wxDC().

获取到目前为止绘图命令中使用的最大垂直范围。

-spec minX(This) -> integer() when This :: wxDC().

获取到目前为止绘图命令中使用的最小水平范围。

-spec minY(This) -> integer() when This :: wxDC().

获取到目前为止绘图命令中使用的最小垂直范围。

链接到此函数

resetBoundingBox(This)

查看源代码
-spec resetBoundingBox(This) -> ok when This :: wxDC().

重置边界框:调用此函数后,边界框不包含任何内容。

参见:calcBoundingBox/3

链接到此函数

setAxisOrientation(This, XLeftRight, YBottomUp)

查看源代码
-spec setAxisOrientation(This, XLeftRight, YBottomUp) -> ok
                            when This :: wxDC(), XLeftRight :: boolean(), YBottomUp :: boolean().

设置 x 轴和 y 轴的方向(即轴上从最低值到最高值的方向)。

默认方向为 x 轴从左到右,y 轴从上到下。

链接到此函数

setBackground(This, Brush)

查看源代码
-spec setBackground(This, Brush) -> ok when This :: wxDC(), Brush :: wxBrush:wxBrush().

设置 DC 的当前背景画刷。

链接到此函数

setBackgroundMode(This, Mode)

查看源代码
-spec setBackgroundMode(This, Mode) -> ok when This :: wxDC(), Mode :: integer().

mode 可以是 wxPENSTYLE_SOLIDwxPENSTYLE_TRANSPARENT 之一。

此设置确定是否使用背景颜色绘制文本。

-spec setBrush(This, Brush) -> ok when This :: wxDC(), Brush :: wxBrush:wxBrush().

设置 DC 的当前画刷。

如果参数为 ?wxNullBrush(或其他无效画刷;请参见 wxBrush:isOk/1),则将当前画刷从设备上下文中选出(使 wxDC 不具有任何有效画刷),从而可以安全地销毁当前画刷。

参见

链接到此函数

setClippingRegion(This, Rect)

查看源代码
-spec setClippingRegion(This, Rect) -> ok
                           when
                               This :: wxDC(),
                               Rect :: {X :: integer(), Y :: integer(), W :: integer(), H :: integer()}.

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

链接到此函数

setClippingRegion(This, Pt, Sz)

查看源代码
-spec setClippingRegion(This, Pt, Sz) -> ok
                           when
                               This :: wxDC(),
                               Pt :: {X :: integer(), Y :: integer()},
                               Sz :: {W :: integer(), H :: integer()}.

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

链接到此函数

setDeviceOrigin(This, X, Y)

查看源代码
-spec setDeviceOrigin(This, X, Y) -> ok when This :: wxDC(), X :: integer(), Y :: integer().

设置设备原点(即应用缩放后的像素原点)。

此函数在 Windows 打印操作中用于在页面上放置图形时非常有用。

-spec setFont(This, Font) -> ok when This :: wxDC(), Font :: wxFont:wxFont().

设置 DC 的当前字体。

如果参数为 ?wxNullFont(或其他无效字体;请参见 wxFont:isOk/1),则将当前字体从设备上下文中选出(使 wxDC 不具有任何有效字体),从而可以安全地销毁当前字体。

参见:wxFont

链接到此函数

setLayoutDirection(This, Dir)

查看源代码
-spec setLayoutDirection(This, Dir) -> ok when This :: wxDC(), Dir :: wx:wx_enum().

设置设备上下文的当前布局方向。

参见:getLayoutDirection/1

链接到此函数

setLogicalFunction(This, Function)

查看源代码
-spec setLogicalFunction(This, Function) -> ok when This :: wxDC(), Function :: wx:wx_enum().

设置设备上下文的当前逻辑函数。

注意:由于底层绘图模型的限制,并非所有端口都完全支持此功能。值得注意的是,过去通常用于绘制橡皮筋或其他移动轮廓的 wxINVERT 不会,也不会在 wxGTK3 和 wxMac 中支持。建议的替代方法是正常绘制临时对象,并刷新窗口的(受影响的部分)以稍后删除它们。

它确定 source 像素(来自画笔或画刷颜色,或者如果使用 blit/6 则来自源设备上下文)如何与当前设备上下文中的 destination 像素组合。文本绘制不受此函数的影响。

有关更多信息,请参见 ?wxRasterOperationMode 枚举值。

默认值为 wxCOPY,它只是使用当前颜色进行绘制。其他选项使用逻辑运算组合当前颜色和背景。

链接到此函数

setMapMode(This, Mode)

查看源代码
-spec setMapMode(This, Mode) -> ok when This :: wxDC(), Mode :: wx:wx_enum().

设备上下文的映射模式定义了用于将 logical 单位转换为 device 单位的度量单位。

请注意,在 X 中,文本绘制与映射模式的处理不一致;字体始终以磅值指定。但是,设置用户比例(请参见 setUserScale/3)会适当地缩放文本。在 Windows 中,始终使用可缩放的 TrueType 字体;在 X 中,结果取决于字体的可用性,但通常会找到合理的匹配项。

坐标原点始终位于屏幕/打印机的左上角。

绘制到 Windows 打印机设备上下文使用当前的映射模式,但当前对于 PostScript 输出会忽略映射模式。

链接到此函数

setPalette(This, Palette)

查看源代码
-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

链接到此函数

setTextBackground(This, Colour)

查看源代码
-spec setTextBackground(This, Colour) -> ok when This :: wxDC(), Colour :: wx:wx_colour().

设置 DC 的当前文本背景颜色。

链接到此函数

setTextForeground(This, Colour)

查看源代码
-spec setTextForeground(This, Colour) -> ok when This :: wxDC(), Colour :: wx:wx_colour().

设置 DC 的当前文本前景色。

另请参阅:wxMemoryDC

链接到此函数

setUserScale(This, XScale, YScale)

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

设置用户比例因子,对于需要“缩放”的应用程序很有用。

链接到此函数

startDoc(This, Message)

查看源代码
-spec startDoc(This, Message) -> boolean() when This :: wxDC(), Message :: unicode:chardata().

开始文档(仅在输出到打印机时相关)。

message 是打印时显示的消息。

-spec startPage(This) -> ok when This :: wxDC().

开始文档页(仅在输出到打印机时相关)。