- 类 QPainter#
QPainter
类在控件和其他绘图设备上执行低级别绘图。更多...继承自:
QStylePainter
概述#
方法#
def
__init__()
def
__enter__()
def
__exit__()
def
background()
def
backgroundMode()
def
begin()
def
boundingRect()
def
brush()
def
brushOrigin()
定义
clipPath()
定义
clipRegion()
定义
device()
定义
drawArc()
定义
drawChord()
定义
drawImage()
定义
drawLine()
定义
drawLines()
定义
drawPath()
定义
drawPie()
定义
drawPixmap()
定义
drawPoint()
定义
drawPoints()
定义
drawRect()
def
drawRects()
def
drawStaticText()
def
drawText()
def
drawTextItem()
def
end()
def
eraseRect()
def
fillPath()
def
fillRect()
def
font()
def
fontInfo()
def
fontMetrics()
def
hasClipping()
def
isActive()
def
opacity()
def
paintEngine()
def
pen()
def
renderHints()
def
resetTransform()
def
restore()
def
rotate()
def
save()
定义
scale()
定义
setBrush()
定义
setFont()
定义
setOpacity()
定义
setPen()
定义
setWindow()
定义
shear()
定义
strokePath()
定义
transform()
定义
translate()
定义
viewport()
定义
window()
注意
此文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译有问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告诉我们。
详细描述#
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
QPainter
提供了高度优化的函数来执行大多数GUI程序所需的绘图任务。它可以绘制从简单线条到复杂图形(如饼图和弧线)的一切。它还可以绘制对齐文本和光标图。通常,它在“自然”坐标系中绘制,但也支持视图和世界变换。《a class="reference internal" href="#PySide6.QtGui.QPainter" title="PySide6.QtGui.QPainter">QPainter
可以在继承自QPaintDevice
类的任何对象上操作。QPainter
的常见用法是在小部件的绘图事件内部:构建并自定义(例如设置画笔或画刷)绘图。然后绘制。记住在绘制后销毁QPainter
对象。例如def paintEvent(self, arg__0): painter = QPainter(self) painter.setPen(Qt.blue) painter.setFont(QFont("Arial", 30)) painter.drawText(rect(), Qt.AlignCenter, "Qt")
QPainter
的核心功能是绘图,但该类还提供了一些函数,允许您自定义QPainter
的设置和其渲染质量,以及其他用于启用裁剪的函数。此外,您还可以通过指定绘图器的合成模式来控制不同形状如何合并在一起。isActive()
函数表示绘图者是否处于活动状态。绘图者通过begin()
函数和接受一个QPaintDevice
参数的构造函数被激活。而end()
函数以及析构函数会使其失效。与
QPaintDevice
和QPaintEngine
类一起,QPainter
构成了 Qt 绘图系统的基石。QPainter
类用于执行绘图操作。QPaintDevice
表示可以用QPainter
绘图的设备。QPaintEngine
提供绘图者绘制到不同类型设备上的接口。如果绘图者处于活动状态,device()
返回绘图者所绘制的绘图设备,而paintEngine()
返回当前绘图者正在操作的绘图引擎。更多信息,请参阅绘图系统 。有时可能需要让其他人在一个不寻常的
QPaintDevice
上绘图。QPainter
支持一个静态函数来完成此操作,即 setRedirected()。警告
当绘图设备是一个小部件(widget)时,只能在 paintEvent() 函数内部或由 paintEvent() 调用的函数中调用
QPainter
。设置
有几种设置可以自定义,以使
QPainter
按您的要求进行绘图font()
是用于绘制文本的字体。如果绘图器isActive()
,可以使用fontInfo()
和fontMetrics()
函数分别检索当前设置的字体及其度量信息。brush()
定义了用于填充形状的颜色或图案。pen()
定义了用于绘制线条或边界的颜色或花纹。backgroundMode()
定义是否存在background()
,即它要么是 Qt::OpaqueMode 或 Qt::TransparentMode。background()
仅在backgroundMode()
为 Qt::OpaqueMode 并且pen()
是花纹时适用。在这种情况下,它描述了花纹中的背景像素颜色。brushOrigin()
定义了平铺刷的起始位置,通常是小部件背景的起始位置。viewport()
,window()
,worldTransform()
构成了绘图器的坐标变换系统。更多详细信息,请参阅Coordinate Transformations
部分,以及 Coordinate System 文档。hasClipping()
说明了绘图器是否进行剪切。 (绘图设备也进行剪切。)如果绘图器进行剪切,则剪切到clipRegion()
。layoutDirection()
定义了绘制文本时绘图器使用的布局方向。worldMatrixEnabled()
说明了是否启用了世界变换。viewTransformEnabled()
用于告诉是否启用了视图转换。
请注意,这些设置中的一些反映了某些绘图设备的设置,例如 QWidget::font()。函数
begin()
(或等价的QPainter
构造函数)会从绘图设备复制这些属性。您可以在任何时候通过调用
QPainter
的save()
函数来保存QPainter
的状态,该函数会将所有可用的设置保存在内部堆栈上。函数restore()
会弹出它们。绘图
QPainter
提供了绘制大多数原语的功能:drawPoint()
、drawPoints()
、drawLine()
、drawRect()
、drawRoundedRect()
、drawEllipse()
、drawArc()
、drawPie()
、drawChord()
、drawPolyline()
、drawPolygon()
、drawConvexPolygon()
和 drawCubicBezier()。便利函数drawRects()
和drawLines()
会使用当前的笔和画刷在给定的 QRect 或 QLines 数组中绘制指定数量的矩形或线条。类
QPainter
还提供了fillRect()
函数,用于填充给定的QRect,使用指定的QBrush
,并提供eraseRect()
函数来擦除给定矩形内部的区域。所有这些函数都有整数和浮点版本。
基本绘图示例
基本绘图示例展示了如何使用
QPainter
类以各种样式显示基本的图形元素。如果您需要绘制复杂形状,尤其是在需要重复绘制时,考虑创建一个
QPainterPath
并使用drawPath()
检索。绘图路径示例
QPainterPath
类提供了一个用于绘画操作的容器,可以用来构建和重用图形形状。绘图路径示例展示了如何使用绘图路径来构建用于绘制的复杂形状。
QPainter
还提供了fillPath()
函数,用于使用指定的QBrush
填充给定的QPainterPath
,还提供了strokePath()
函数,用于绘制给定路径的轮廓(即“勾画”路径)。还可以参考矢量变形示例,此示例显示如何使用高级矢量技术使用
QPainterPath
来绘制文本,梯度示例显示了Qt中可用的不同类型的梯度,以及路径描边示例显示了Qt的内置虚线图案,并展示了如何使用自定义图案来扩展可用图案的范围。矢量变形
梯度
路径描边
文本绘制使用
drawText()
完成。当您需要精确的位置时,boundingRect()
将告诉您给定drawText()
命令将绘制的位置。绘图位图和图像
有绘制位图/图像的函数,分别是
drawPixmap()
、drawImage()
和drawTiledPixmap()
。drawPixmap()
和drawImage()
的结果相同,除了drawPixmap()
在屏幕上更快之外,drawImage()
在 QPrinter 或其他设备上可能更快。还有一个
drawPicture()
函数,它可以绘制整个QPicture
的内容。这是唯一一个忽略所有绘图设置的功能,因为QPicture
有自己的设置。绘制高分辨率位图和图像版本#
高分辨率版本的位图具有大于1的 设备像素比 值(参见
QImageReader
,devicePixelRatio()
)。如果它与底层QPaintDevice
的值匹配,它将直接绘制到设备上,不应用任何额外的转换。例如,当在一个设备像素比为2的高DPI屏幕上绘制一个64x64像素大小的
QPixmap
时,这也是这种情况。请注意,此时位图在实际的 用户空间 中是32x32像素。基于位图大小计算布局几何形状的 Qt 中的代码路径将使用此大小。这样做的净效果是位图以高DPI位图的形式显示,而不是大位图。渲染质量#
要使用
QPainter
获取最佳渲染结果,应使用平台独立的QImage
作为绘图设备;也就是说,使用QImage
将确保在任何平台上结果都有相同的像素表示。《QPainter》类还提供了控制渲染质量的手段,通过其
RenderHint
枚举类型以及对浮点精度支持的实现:所有绘制原语的功能都有相应的浮点版本。painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter))
这些通常与
Antialiasing
渲染提示一起使用。painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing, True)
比较同心圆中int型和float型的,以及是否启用抗锯齿渲染。使用浮点精度版本可以产生均匀分布的环。启用抗锯齿渲染则会产生平滑的圆形。
RenderHint
枚举类型为QPainter
指定了标志位,在某些引擎中可能会被尊重或忽略。Antialiasing
表明引擎应在可能的情况下抗锯齿原语边缘,TextAntialiasing
表明引擎应在可能的情况下抗锯齿文本,而SmoothPixmapTransform
表明引擎应使用平滑位图变换算法。renderHints()
函数返回指定了在此画家中设置的渲染提示的标志。使用setRenderHint()
函数设置或清除当前设置的RenderHints
。坐标变换
通常,
QPainter
在其设备自己的坐标系(通常是像素为单位)上操作,但QPainter
对坐标变换具有良好的支持。最常用的变换包括缩放、旋转、平移和剪切。使用
scale()
函数以给定的偏移缩放坐标系,使用rotate()
函数顺时针旋转它,使用translate()
进行平移(即向点添加给定的偏移)。您还可以使用shear()
函数旋转坐标系。参见仿射变换示例,以查看剪切坐标系的可视化。还可以参考变换示例,该示例展示了变换如何影响
QPainter
绘制图形元素的方式。特别是它展示了变换顺序如何影响结果。仿射变换示例
仿射变换示例展示了 Qt 在绘画操作中执行仿射变换的能力。演示还允许用户实验变换操作并立即查看结果。
所有的变换操作都会作用于变换的
worldTransform()
。一个矩阵将平面上的一个点转换到另一个点。有关变换矩阵的更多信息,请参阅坐标系 和QTransform
文档。setWorldTransform()
函数可以替换或添加当前设置的worldTransform()
。resetTransform()
函数重置使用translate()
、scale()
、shear()
、rotate()
、setWorldTransform()
、setViewport()
和setWindow()
函数进行的任何变换。deviceTransform()
返回从逻辑坐标转换到平台相关的绘制装置的设备坐标的矩阵。后一个函数仅在使用依赖于平台绘制命令的平台相关句柄时需要,且平台不会原生地执行转换。在使用
QPainter
绘图时,我们使用逻辑坐标来指定点,然后这些坐标被转换为绘图设备的物理坐标。逻辑坐标到物理坐标的映射是由QPainter
的combinedTransform()
处理的,这是一个结合了viewport()
、window()
和worldTransform()
的函数。其中,viewport()
表示指定任意矩形的物理坐标,window()
在逻辑坐标中描述相同的矩形,而worldTransform()
与变换矩阵相同。请参阅坐标系
裁剪#
QPainter
可以将任何绘图操作裁剪到一个矩形、一个区域或一个矢量路径。当前的裁剪可以通过函数clipRegion()
和clipPath()
获取。是路径还是区域更受青睐(更快)取决于底层paintEngine()
。例如,QImage
绘图引擎偏好路径,而 X11 绘图引擎偏好区域。裁剪的设置是在绘图引擎的逻辑坐标中完成的。在
QPainter
的裁剪之后,绘图设备也可能进行裁剪。例如,大多数小部件会裁剪掉子小部件使用的像素,大多数打印机会裁剪纸张边缘附近的一个区域。这种附加裁剪不会反映在clipRegion()
或hasClipping()
的返回值中。合成模式#
QPainter
提供了CompositionMode
枚举,该枚举定义了 Porter-Duff 规则用于数字图像合成;它描述了一个将一个图像(源)中的像素与另一个图像(目标)中的像素结合的模型。最常见的两种合成形式是
Source
和SourceOver
。Source
用于在绘图设备上绘制不透明对象。在这种模式下,源图像中的每个像素将替换目标图像中相应的像素。在SourceOver
合成模式下,源对象是透明的,并且绘制在目标对象之上。请注意,合成转换是按像素操作的。因此,使用图形原语本身和其包围矩形之间有区别:包围矩形包含 alpha == 0 的像素(即原始周围的像素)。这些像素将覆盖其他图像的像素,实际上清除这些像素,而原始图形仅覆盖其自己的区域。
合成模式示例
合成模式示例在 Qt 的示例目录中提供,您可以使用它实验各种合成模式并立即看到结果。
局限性#
如果您在使用基于光栅的绘图引擎的 Qt 坐标,请注意,虽然可以使用大于 +/- 2 15 的坐标,但在此范围之外的任何绘图均无法保证显示;绘图可能会被剪裁。这是因为实现中使用了
short int
。Qt 的画笔生成的轮廓在处理弯曲形状时仅是近似。通常无法使用另一个贝塞尔曲线段来表示贝塞尔曲线段的轮廓,因此 Qt 使用多个较小的曲线来近似曲线轮廓。出于性能原因,Qt 对用于这些轮廓的曲线数量有限制,因此当使用大线条宽度或缩放时,轮廓误差会增加。要生成误差较小的轮廓,可以使用具有设置曲线阈值成员函数的
QPainterPathStroker
类,用户可以指定错误容忍度。另一种解决方案是将路径首先转换为多边形,然后绘制多边形。性能#
QPainter
是一个功能丰富的框架,它允许开发者执行各种图形操作,例如渐变、合成模式以及矢量图形。而且,QPainter
可以在各种各样的硬件和软件堆叠上执行这些操作。自然地,底层硬件和软件的组合对性能有一些影响,并且由于排列组合的数量巨大,确保每一个操作在所有合成模式、画笔、裁剪、变换等各种组合下都很快,几乎是一项不可能的任务。作为一个折衷方案,我们选择了QPainter
API 和后端的一部分,在这里,性能保证在我们给定的硬件和软件组合下尽可能好。我们将关注的、以高性能引擎为主的后端有:
光线 — 这个后端使用纯软件实现所有渲染,始终用于将内容渲染到 QImages 中。为了获得最佳性能,仅使用
Format_ARGB32_Premultiplied
,Format_RGB32
或Format_RGB16
格式。其他格式,包括Format_ARGB32
,性能明显较差。此引擎默认用于 QWidget 和QPixmap
。OpenGL 2.0 (ES) — 这个后端是硬件加速图形的主要后端。它可以在支持 OpenGL 2.0 或 OpenGL/ES 2.0 规范的桌面计算机和嵌入式设备上运行。这包括最近几年生产的几乎所有图形芯片。可以通过将
QPainter
应用于 QOpenGLWidget 上来启用此引擎。
这些操作包括:
简单的变换,即平移和缩放,以及 0、90、180、270 度的旋转。
与简单的变换和透明度结合使用
drawPixmap()
,在没有 smooth transformation 模式(未将QPainter::SmoothPixmapTransform
作为渲染提示启用)的情况下。使用纯色、双色线性渐变和简单变换进行矩形填充。
使用简单的变换和相交裁剪进行矩形裁剪。
合成模式:
QPainter::CompositionMode_Source
和CompositionMode_SourceOver
。使用纯色和双色线性渐变填充圆角矩形。
通过 qDrawBorderPixmap 使用 3x3 补丁 pixmap。
此列表提供了一种指示,说明在关键性能的应用程序中哪些特性可以安全使用的参考。对于某些设置,其他操作也可能很快,但在大规模使用之前,建议在最终运行的系统上进行基准测试和验证。在结果缓存到
QPixmap
时,一些成本较高的操作也是可以接受的。另请参阅
QPaintDevice
QPaintEngine
Qt SVGBasic Drawing ExampleDrawing Utility Functions
- class RenderHint#
(继承自
enum.Flag
) Renderhints 用于指定用于QPainter
的标志,特定的引擎可能会或可能不会尊重这些标志。常量
描述
QPainter.Antialiasing
指示引擎应在可能的情况下对原语边缘进行抗锯齿处理。
QPainter.TextAntialiasing
指示引擎应在可能的情况下对文本进行抗锯齿处理。要强制关闭文本的抗锯齿,不要使用此提示,而是在您的字体样式策略上设置
NoAntialias
。QPainter.SmoothPixmapTransform
指示引擎应使用平滑的位图变换算法(如双线性)而不是最近邻。
QPainter.VerticalSubpixelPositioning
在字体引擎支持的情况下,允许文本在水平和垂直方向以像素分数的大小定位。这目前由 Freetype 在所有平台上支持,当提示偏好设置为
PreferNoHinting
且 macOS 上支持。对于大多数用例,这不会提高视觉效果,但可能会增加内存消耗并降低文本渲染性能。因此,除非使用场景确实需要,否则不建议启用此选项。一种可能的使用场景是将位图与其它视觉原语对齐。这个值是在 Qt 6.1 中添加的。QPainter.LosslessImageRendering
尽可能使用无损图像渲染。目前,此提示仅在
QPainter
通过 QPrinter 或QPdfWriter
输出 PDF 文件时使用,其中drawImage()
/drawPixmap()
调用将使用无损压缩算法而不是有损 JPEG 压缩来编码图像。这个值是在 Qt 5.13 中添加的。QPainter.NonCosmeticBrushPatterns
使用预设图案样式中的刷子绘图时,应同时转换图案和待绘制对象。默认将图案视为装饰性,使图案像素直接映射到设备像素,不受任何活动变换的影响。此功能自 Qt 6.4 中添加。
另请参阅
- class PixmapFragmentHint#
常量
描述
QPainter.OpaqueHint
(继承
enum Flag
) 表示要绘制的位图片段是不透明的。不透明片段可能绘制得更快。另请参阅
drawPixmapFragments()
PixmapFragment
新功能自 4.7 版本。
- class CompositionMode#
定义了支持的数字图像合成模式。合成模式用于指定一个图像(源)中的像素如何与另一个图像(目标)中的像素合并。
请注意,具有 RasterOp 前缀的光栅运算模式仅在 X11 和光栅绘图引擎中原生支持。这意味着在 Mac 上使用这些模式的唯一方法是借助
QImage
。带有 RasterOp 标记的混合模式不支持包含 alpha 分量的笔刷和画笔。此外,开启AntiAliasing
渲染提示将有效地禁用 RasterOp 模式。最常见类型是 SourceOver(常被称为 alpha 混合),源像素以这种方式与目标像素混合,即源像素的 alpha 分量定义像素的透明度。
一些合成模式需要源或目标图像具有alpha通道才能生效。为了获得最佳性能,推荐使用图像格式
Format_ARGB32_Premultiplied
。设置合成模式后,它将对所有绘画运算符、笔刷、画笔、渐变和位图/图像绘制生效。
常量
描述
QPainter.CompositionMode_SourceOver
这是默认模式。使用源像素的 alpha 值在上面的目标像素上混合。
QPainter.CompositionMode_DestinationOver
使用目标像素的 alpha 值在其上混合源像素。此模式是 CompositionMode_SourceOver 的逆模式。
QPainter.CompositionMode_Clear
独立于源,清除(设置为完全透明)目标像素。
QPainter.CompositionMode_Source
输出是源像素。(这意味着是一次基本复制操作,如果源像素是不透明的,则与 SourceOver 相同)。
QPainter.CompositionMode_Destination
输出是目标像素。这意味着混合没有效果。这种模式是CompositionMode_Source的逆。
QPainter.CompositionMode_SourceIn
输出是源色,其alpha值被目标alpha值降低。
QPainter.CompositionMode_DestinationIn
输出是目标像素,其alpha值被源alpha值降低。这种模式是CompositionMode_SourceIn的逆。
QPainter.CompositionMode_SourceOut
输出是源色,其alpha值被目标alpha值的反向降低。
QPainter.CompositionMode_DestinationOut
输出是目标像素,其alpha值被源alpha值的反向降低。这种模式是CompositionMode_SourceOut的逆。
QPainter.CompositionMode_SourceAtop
源像素与目标像素混合,源像素的alpha值由目标像素的alpha值降低。
QPainter.CompositionMode_DestinationAtop
目标像素与源像素混合,目标像素的alpha值由源像素的alpha值降低。这种模式是CompositionMode_SourceAtop的逆。
QPainter.CompositionMode_Xor
源alpha值与目标alpha值的反向降低后与目标合并,其alpha值由源alpha值的反向降低。CompositionMode_Xor与位运算Xor不同。
QPainter.CompositionMode_Plus
源和目标像素的alpha和颜色相加。
QPainter.CompositionMode_Multiply
输出是源颜色乘以目标颜色。用白色乘以颜色不改变颜色,而用黑色乘以颜色则产生黑色。
QPainter.CompositionMode_Screen
源颜色和目标颜色反转后相乘。用白色筛分产生白色,而用黑色筛分不改变颜色。
QPainter.CompositionMode_Overlay
根据目标颜色乘以或筛分颜色。目标颜色与源颜色混合以反映目标颜色的明暗。
QPainter.CompositionMode_Darken
选择源和目标颜色中较暗的颜色。
QPainter.CompositionMode_Lighten
选择源和目标颜色中较亮的颜色。
QPainter.CompositionMode_ColorDodge
提高目标颜色以反映源颜色。黑色源颜色不改变目标颜色。
QPainter.CompositionMode_ColorBurn
降低目标颜色以反映源颜色。白色源颜色不改变目标颜色。
QPainter.CompositionMode_HardLight
根据源颜色乘以或筛分颜色。亮的源颜色会变亮目标颜色,而暗的源颜色会使目标颜色变暗。
QPainter.CompositionMode_SoftLight
根据源颜色变暗或变亮颜色。类似于CompositionMode_HardLight。
QPainter.CompositionMode_Difference
从较亮的颜色中减去较暗的颜色。用白色绘制反转目标颜色,而用黑色绘制不改变目标颜色。
QPainter.CompositionMode_EXCLUSION
类似于CompositionMode_Difference,但有较低的反差。用白色绘制反转目标颜色,而用黑色绘制不改变目标颜色。
QPainter.RasterOp_SOURCE_OUT
对源和目标像素进行位或操作(src OR dst)。
QPainter.RasterOp_SourceAndDestination
对源和目标像素进行位与操作(src AND dst)。
QPainter.RasterOp_SourceXorDestination
对源和目标像素进行位异或操作(src XOR dst)。
QPainter.RasterOp_NotSourceAndNotDestination
对源和目标像素进行位或非操作((NOT src) AND (NOT dst))。
QPainter.RasterOp_NotSourceOrNotDestination
对源像素和目标像素进行按位NAND操作(NOT src OR NOT dst)。
QPainter.RasterOp_NotSourceXorDestination
进行按位操作,先将源像素取反然后与目标像素进行异或操作(NOT src XOR dst)。
QPainter.RasterOp_NotSource
进行按位操作,只对源像素取反(NOT src)。
QPainter.RasterOp_NotSourceAndDestination
进行按位操作,先将源像素取反然后与目标像素进行与操作(NOT src AND dst)。
QPainter.RasterOp_SourceAndNotDestination
进行按位操作,将源像素与取反后的目标像素进行与操作(src AND NOT dst)。
QPainter.RasterOp_NotSourceOrDestination
进行按位操作,先将源像素取反然后与目标像素进行或操作(NOT src OR dst)。
QPainter.RasterOp_ClearDestination
独立于源,将目标像素清除(设置为0)。
QPainter.RasterOp_SetDestination
独立于源,将目标像素设置为1。
QPainter.RasterOp_NotDestination
进行按位操作,只对目标像素取反(NOT dst)。
QPainter.RasterOp_SourceOrNotDestination
进行按位操作,将源像素与取反后的目标像素进行或操作(src OR NOT dst)。
另请参阅
compositionMode()
setCompositionMode()
Composition Modes
Image Composition Example
- __init__(arg__1)#
- 参数:
arg__1 –
QPaintDevice
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
构造一个画家,立即开始绘制 paint
device
。此构造函数对于生命周期较短的画家很方便,例如在 QWidget::paintEvent() 中,应仅使用一次。该构造函数为您调用
begin()
,而QPainter
析构函数会自动调用end()
.def paintEvent(self, arg__0): p = QPainter() p.begin(self) p.drawLine(drawingCode) # drawing code p.end()
使用此构造函数的相同示例
def paintEvent(self, arg__0): p = QPainter(self) p.drawLine(drawingCode) # drawing code
由于构造函数无法提供初始化画家失败时的反馈,因此您应使用
begin()
和end()
在外部设备上绘制,例如打印机。- __init__()
构造一个画家。
- __exit__(arg__1, arg__2, arg__3)#
- 参数:
arg__1 - 对象
arg__2 - 对象
arg__3 - 对象
返回当前背景画刷。
另请参阅
setBackground()
Settings
返回当前背景模式。
另请参阅
setBackgroundMode()
Settings
- begin(arg__1)#
- 参数:
arg__1 –
QPaintDevice
- 返回类型:
bool
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
开始在该
paint device
上进行绘制,如果成功则返回true
,否则返回false
。注意,当调用 begin() 时,所有画家设置(如
setPen()
和setBrush()
等)都会重置为默认值。可能发生的错误是严重的问题,如下
painter.begin(0) # impossible - paint device cannot be 0 image = QPixmap(0, 0) painter.begin(image) # impossible - image.isNull() == true painter.begin(myWidget) painter2.begin(myWidget) # impossible - only one painter at a time
注意,大多数情况下,你可以使用构造函数之一而不是 begin(),并且
end()
在销毁时会自动执行。警告
一个画家一次只能画一个绘制设备。
- beginNativePainting()#
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
刷新绘图管道,准备用户直接向底层图形上下文发送命令。必须在调用
endNativePainting()
。注意,只有底层绘图引擎更改的状态会重置到各自的默认状态。我们可以重置的状态可能从版本到版本会有所变化。在OpenGL 2引擎中目前重置的状态如下
合并(混合)功能被禁用
深度、模板和剪裁测试被禁用
活动的纹理单元重置为0
深度掩码、深度函数和清除深度被重置为其默认值
模板掩码、模板操作和模板函数被重置为其默认值
当前颜色被重置为纯白色
例如,如果用户在beginNativePaint()/
endNativePainting()
块内更改OpenGL多边形模式,它将不会被endNativePainting()
重置为默认状态。以下是一个示例,展示了绘图命令和原始OpenGL命令的混合painter = QPainter(self) painter.fillRect(0, 0, 128, 128, Qt.green) painter.beginNativePainting() glEnable(GL_SCISSOR_TEST) glScissor(0, 0, 64, 64) glClearColor(1, 0, 0, 1) glClear(GL_COLOR_BUFFER_BIT) glDisable(GL_SCISSOR_TEST) painter.endNativePainting()
另请参阅
这是一个重载函数。
返回文本在给定代码块中按照指定的标志和当前设置的
font()
绘制时的边界矩形。- boundingRect(rect, text, o = QTextOption())
- 参数:
rect –
QRectF
text – str
o –
QTextOption
- 返回类型:
这是一个重载函数。
与使用Qt::AlignmentFlag和Qt::TextFlag的按位或来指定标志不同,这个重载函数接受一个代码"option"参数。QTextOption类提供了一组描述通用富文本属性的描述。
另请参阅
返回文本在给定
rectangle
中绘制时的边界矩形,使用当前设置的字体和标志进行绘制;即该函数告诉您,当给定相同的参数时,drawText()
函数将绘制在何处。如果使用指定的
flags
在给定的rectangle
内无法容纳text
,则该函数返回所需的矩形。flags
参数是以下标志的位或操作Qt::AlignLeft
Qt::AlignRight
Qt::AlignHCenter
Qt::AlignTop
Qt::AlignBottom
Qt::AlignVCenter
Qt::AlignCenter
Qt::TextSingleLine
Qt::TextExpandTabs
Qt::TextShowMnemonic
Qt::TextWordWrap
Qt::TextIncludeTrailingSpaces
如果设置了多个水平或垂直对齐标志,则结果对齐是未定义的。
另请参阅
drawText()
TextFlag
- boundingRect(x, y, w, h, flags, text)
- 参数:
x - int
y - int
w - int
h - int
flags – int
text – str
- 返回类型:
这是一个重载函数。
返回给定文本的边界矩形,当它绘制在从点(
x
,y
)开始的矩形内,宽度为w
和高度为h
时。返回绘图器的当前画刷。
另请参阅
setBrush()
Settings
返回当前设置的画刷原点。
另请参阅
setBrushOrigin()
Settings
如果存在裁剪区域,则返回当前裁剪区域的外接矩形;否则返回一个空矩形。请注意,裁剪区域使用逻辑坐标来表示。
外接矩形不一定是最紧的。
- clipPath()#
- 返回类型:
返回当前裁剪路径的逻辑坐标。
警告
QPainter
并不显式地存储组合裁剪,因为这由底层的QPaintEngine
处理,因此路径在需要时才被重建,并转换为当前的逻辑坐标系。这可能会是一个昂贵的操作。返回当前设置的裁剪区域。请注意,裁剪区域使用逻辑坐标表示。
警告
QPainter
并不显式地存储组合裁剪,因为这由底层的QPaintEngine
处理,因此路径在需要时才被重建,并转换为当前的逻辑坐标系。这可能会是一个昂贵的操作。- combinedTransform()#
- 返回类型:
返回结合当前窗口/视口和世界变换的转换矩阵。
返回当前合成模式。
- device()#
- 返回类型:
获取当前绘制器正在绘制的画笔设备,如果绘制器未激活返回
None
。另请参阅
- deviceTransform()#
- 返回类型:
返回从逻辑坐标到平台相关绘图设备的设备坐标的矩阵。
当在平台相关的句柄(Qt::HANDLE)上使用平台绘图指令且平台不做原生转换时,该函数是必需要的。
可以查询
PaintEngineFeature
枚举以确定平台是否执行转换。这是一个重载函数。
根据给定的矩形、起始角度和跨角度绘制弧线。
- drawArc(rect, a, alen)
- 参数:
rect –
QRectF
**a** – int
**alen** – int
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
根据给定的矩形、起始角度和跨角度绘制弧线。
起始角度和跨角度必须以 1/16 度指定,即一整圈等于 5760(16 * 360)。角度的正值表示逆时针,负值表示顺时针。零度在3点钟位置。
rectangle = QRectF(10.0, 20.0, 80.0, 60.0) startAngle = 30 * 16 spanAngle = 120 * 16 painter = QPainter(self) painter.drawArc(rectangle, startAngle, spanAngle)
另请参阅
- drawArc(x, y, w, h, a, alen)
- 参数:
x - int
y - int
w - int
h - int
**a** – int
**alen** – int
这是一个重载函数。
以指定宽度和高度从(
x
,y
)位置开始的矩形,绘制起始角度和跨角度定义的弧线。- drawChord(x, y, w, h, a, alen)#
- 参数:
x - int
y - int
w - int
h - int
**a** – int
**alen** – int
这是一个重载函数。
使用指定的代码 DrawChord(x, y)处的矩形,宽和高度,以及给定的起始角度和跨度角度来绘制一道和弦。
- drawChord(arg__1, a, alen)
- 参数:
**arg__1** –
QRect
**a** – int
**alen** – int
这是一个重载函数。
使用给定的矩形,起始角度和跨度角度绘制一个和弦。
- drawChord(rect, a, alen)
- 参数:
rect –
QRectF
**a** – int
**alen** – int
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
使用给定的矩形,起始角度和跨度角度绘制一个和弦。这个弦将填充当前的画笔色。
起始角度和跨度角度必须以16分度之一的度数指定,即一整圈等于5760度(16 * 360)。角度的正值表示逆时针方向,而负值表示顺时针方向。零度在3点钟位置。
- drawConvexPolygon(arg__1)#
- 参数:
arg__1 —— .QPoint点列表
- drawConvexPolygon(arg__1)
- 参数:
arg__1 —— .QPointF点列表
- drawConvexPolygon(polygon)
- 参数:
polygon ——
QPolygon
这是一个重载函数。
使用当前画笔和画刷绘制由
polygon
定义的凸多边形。- drawConvexPolygon(polygon)
- 参数:
polygon ——
QPolygonF
这是一个重载函数。
使用当前画笔和画刷绘制由
polygon
定义的凸多边形。这是一个重载函数。
以位置
center
,半径rx
和ry
绘制椭圆。- drawEllipse(center, rx, ry)
- 参数:
center –
QPointF
rx – float
ry – float
这是一个重载函数。
以位置
center
,半径rx
和ry
绘制椭圆。- drawEllipse(r)
- 参数:
r –
QRect
这是一个重载函数。
根据给定的
rectangle
绘制椭圆。- drawEllipse(r)
- 参数:
r –
QRectF
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
根据给定的
rectangle
绘制椭圆。填充椭圆的大小是
rectangle
.size()。线框椭圆的大小是rectangle
.size() 加上笔宽。- drawEllipse(x, y, w, h)
- 参数:
x - int
y - int
w - int
h - int
这是一个重载函数。
绘制一个以点 (
x
,y
) 开始,具有给定宽度和高度width
和height
的矩形定义的椭圆。在
position
位置绘制由glyphs
表示的符号。该position
提供了符号字符串的基线边缘。符号将根据glyphs
上选择的字体以及glyphs
中的偏移量检索。这是一个重载函数。
在指定的
point
位置绘制给定的image
。- drawImage(p, image, sr[, flags=Qt.AutoColor])
- 参数:
p –
QPoint
image –
QImage
sr –
QRect
flags –
ImageConversionFlag
的组合
这是一个重载函数。
以给定的
point
原点绘制给定image
的矩形部分source
。这是一个重载函数。
在指定的
point
位置绘制给定的image
。- drawImage(p, image, sr[, flags=Qt.AutoColor])
- 参数:
p –
QPointF
image –
QImage
sr –
QRectF
flags –
ImageConversionFlag
的组合
这是一个重载函数。
以给定的
point
原点绘制给定image
的矩形部分source
。这是一个重载函数。
将给定的
image
绘制到给定的rectangle
中。注意
如果图像和矩形大小不同,图像将被缩放以适合矩形。
- drawImage(targetRect, image, sourceRect[, flags=Qt.AutoColor])
- 参数:
targetRect –
QRect
image –
QImage
sourceRect –
QRect
flags –
ImageConversionFlag
的组合
这是一个重载函数。
将给定图像的矩形部分
source
绘制到绘图设备中的目标矩形target
中。注意
如果图像和矩形大小不同,图像将被缩放以适合矩形。
这是一个重载函数。
将给定的
image
绘制到给定的rectangle
中。注意
如果图像和矩形大小不同,图像将被缩放以适合矩形。
- drawImage(targetRect, image, sourceRect[, flags=Qt.AutoColor])
- 参数:
targetRect –
QRectF
image –
QImage
sourceRect –
QRectF
flags –
ImageConversionFlag
的组合
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
将给定图像的矩形部分
source
绘制到绘图设备中的目标矩形target
中。注意
如果图像和矩形大小不同,图像将被缩放以适合矩形。
注意
有关如何受QImage::devicePixelRatio()影响的详细信息,请参阅
Drawing High Resolution Versions of Pixmaps and Images
。如果需要修改图像以适合较低分辨率的输出(例如,从32位转换为8位),请使用
flags
来指定您希望如何执行此操作。target = QRectF(10.0, 20.0, 80.0, 60.0) source = QRectF(0.0, 0.0, 70.0, 40.0) image = QImage(":/images/myImage.png") painter = QPainter(self) painter.drawImage(target, image, source)
另请参阅
drawPixmap()
devicePixelRatio()
- drawImage(x, y, image[, sx=0[, sy=0[, sw=-1[, sh=-1[, flags=Qt.AutoColor]]]]])
- 参数:
x - int
y - int
image –
QImage
sx – int
sy – int
sw – int
sh – int
flags –
ImageConversionFlag
的组合
这是一个重载函数。
在('
x
', 'y
')处绘制图像,通过将image
的一部分复制到绘图设备中。('x', 'y')指定要绘制到绘图设备中的左上角点。('
sx
', 'sy
')指定要绘制图像中的左上角点。默认为(0, 0)。('
sw
', 'sh
')指定要绘制的图像大小。默认值(0, 0)(和负值)意味着画到图像的右下角。- drawLine(x1, y1, x2, y2)#
- 参数:
x1 – int
y1 – int
x2 – int
y2 – int
这是一个重载函数。
从('
x1
', 'y1
')绘制到('x2
', 'y2
')直线。这是一个重载函数。
从
p1
绘制到p2
的线条。- drawLine(line)
- 参数:
line –
QLineF
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
使用
line
定义的线条。line = QLineF(10.0, 80.0, 90.0, 20.0) painter = QPainter(self) painter.drawLine(line)
另请参阅
- drawLine(line)
- 参数:
line –
QLine
这是一个重载函数。
使用
line
定义的线条。这是一个重载函数。
从
p1
绘制到p2
的线条。使用当前画笔绘制数组
lines
中前lineCount
条线。另请参阅
- drawLines(lines)
- 参数:
lines – .QLine 列表
这是一个重载函数。
使用当前画笔和填充刷绘制由列表
lines
定义的线条集。- drawLines(lines)
- 参数:
lines – .QLineF 列表
这是一个重载函数。
使用当前画笔和填充刷绘制由列表
lines
定义的线条集。- drawLines(pointPairs)
- 参数:
pointPairs – .QPoint 列表
这是一个重载函数。
使用当前画笔在每个点对上绘制线条,该点对位于向量
pointPairs
中。- drawLines(pointPairs)
- 参数:
pointPairs – .QPointF 列表
这是一个重载函数。
在每个点对上绘制线条,该点对位于向量
pointPairs
中。如果数组中点的数量是奇数,则忽略最后一个点。- drawPath(path)#
- 参数:
路径 –
QPainterPath
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
使用当前笔划轮廓和当前画笔填充来绘制给定的
path
。path = QPainterPath() path.moveTo(20, 80) path.lineTo(20, 30) path.cubicTo(80, 0, 50, 50, 80, 80) painter = QPainter(self) painter.drawPath(path)
另请参阅
画笔路径 示例,向量变形 示例
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
在给定的
point
位置重新播放给定的picture
。QPicture
类是一个绘画设备,用于记录和回放QPainter
命令。图片将绘图命令序列化到一个平台无关的IO设备。可以在小部件或小图上绘制的任何内容也可以存储在图片中。当用点
point
=QPointF(0, 0)
调用时,此函数与play()
完全相同。注意
该函数会保持绘图器的状态。
picture = QPicture() point = QPointF(10.0, 20.0) picture.load("drawing.pic") painter = QPainter(self) painter.drawPicture(0, 0, picture)
另请参阅
- drawPicture(x, y, picture)
- 参数:
x - int
y - int
图片 –
QPicture
这是一个重载函数。
在点(
x
,y
)处绘制给定的picture
。这是一个重载函数。
在给定的
point
位置重新播放给定的picture
。这是一个重载函数。
根据给定的
rectangle
、startAngle
和spanAngle
绘制一个饼图。- drawPie(rect, a, alen)
- 参数:
rect –
QRectF
**a** – int
**alen** – int
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
根据给定的
rectangle
、startAngle
和spanAngle
绘制一个饼图。这个饼图用当前的
brush()
。起始角度和跨度角度必须以16分度之一的度数指定,即一整圈等于5760度(16 * 360)。角度的正值表示逆时针方向,而负值表示顺时针方向。零度在3点钟位置。
rectangle = QRectF(10.0, 20.0, 80.0, 60.0) startAngle = 30 * 16 spanAngle = 120 * 16 painter = QPainter(self) painter.drawPie(rectangle, startAngle, spanAngle)
另请参阅
- drawPie(x, y, w, h, a, alen)
- 参数:
x - int
y - int
w - int
h - int
**a** – int
**alen** – int
这是一个重载函数。
绘制由矩形定义的饼图,该矩形从 (
x
,y
) 开始,具有指定的width
和height
,以及给定的startAngle
和spanAngle
。这是一个重载函数。
将
pixmap
绘制到位置为 (x
,y
) 的矩形内,其宽度和高度分别为给定的width
和height
。- drawPixmap(x, y, w, h, pm, sx, sy, sw, sh)
- 参数:
x - int
y - int
w - int
h - int
pm –
QPixmap
sx – int
sy – int
sw – int
sh – int
这是一个重载函数。
从给定的
pixmap
中绘制原点为 (sx
,sy
), 宽度为sw
和高度为sh
的矩形部分,放置在点 (x
,y
),宽度为w
和高度为h
。如果 sw 或 sh 为零,则使用 pixmap 的宽度和高度,并根据偏移量 sx/sy 进行调整;- drawPixmap(x, y, pm, sx, sy, sw, sh)
- 参数:
x - int
y - int
pm –
QPixmap
sx – int
sy – int
sw – int
sh – int
这是一个重载函数。
通过将给定
pixmap
的一部分复制到画布设备中来在 (x
,y
) 处绘制位图。(
x
,y
) 指定了在画布设备中要绘制到顶左点的位置。(sx
,sy
) 指定了pixmap
中要绘制的顶左点的位置。默认为 (0, 0)。(
sw
,sh
) 指定了要绘制的位图的尺寸。默认值 (0, 0)(以及负值)表示延伸到位图的右下角。- drawPixmap(x, y, pm)
- 参数:
x - int
y - int
pm –
QPixmap
这是一个重载函数。
在位置 (
x
,y
) 绘制给定的pixmap
}警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
在画布设备给定的
target
中绘制给定pixmap
的矩形部分source
。注意
如果位图和矩形的大小不一致,则会将位图缩放以适应矩形。
注意
有关此方式如何受
devicePixelRatio()
的影响,请参阅Drawing High Resolution Versions of Pixmaps and Images
。target = QRectF(10.0, 20.0, 80.0, 60.0) source = QRectF(0.0, 0.0, 70.0, 40.0) pixmap = QPixmap(":myPixmap.png") painter = QPainter(self) painter.drawPixmap(target, pixmap, source)
如果
pixmap
是一个QBitmap
,则使用画笔的颜色绘制“设置”的位。如果backgroundMode
是 Qt::OpaqueMode,则用背景画刷的颜色绘制“未设置”的位;如果backgroundMode
是 Qt::TransparentMode,则“未设置”的位为透明。不支持使用渐变或纹理颜色绘制位图。另请参阅
drawImage()
devicePixelRatio()
这是一个重载函数。
将给定的
pixmap
绘制到给定的rectangle
中。注意
如果位图和矩形的大小不一致,则会将位图缩放以适应矩形。
这是一个重载函数。
以给定的点为原点绘制给定
pixmap
的矩形源source
。这是一个重载函数。
以给定点为原点绘制给定的
pixmap
。这是一个重载函数。
以给定的点为原点绘制给定
pixmap
的矩形源source
。这是一个重载函数。
以给定点为原点绘制给定的
pixmap
。这是一个重载函数。
在画布设备给定的
target
中绘制给定pixmap
的矩形部分source
。注意
如果位图和矩形的大小不一致,则会将位图缩放以适应矩形。
- drawPixmapFragments(fragments, fragmentCount, pixmap[, hints=QPainter.PixmapFragmentHints()])#
- 参数:
fragments –
PixmapFragment
fragmentCount – int
位图 –
QPixmap
hints – 组合了
PixmapFragmentHint
此函数用于在多个位置以不同的缩放、旋转和透明度绘制
pixmap
或pixmap
的子矩形。fragments
是一个包含fragmentCount
个元素的数组,指定了绘制每个 pixmap 片段的参数。可以使用hints
参数传递绘图提示。由于后端可以优化状态变化,此函数可能比多次调用
drawPixmap()
更快。另请参阅
PixmapFragment
PixmapFragmentHint
这是一个重载函数。
使用当前画笔的颜色在给定的
position
位置绘制一个点。- drawPoint(pt)
- 参数:
pt –
QPointF
使用当前画笔的颜色在给定的
position
位置绘制一个点。另请参阅
- drawPoint(x, y)
- 参数:
x - int
y - int
这是一个重载函数。
在位置(
x
,y
)处绘制单个点。这是一个重载函数。
绘制向量中的点
points
。- drawPoints(points)
- 参数:
points –
QPolygon
这是一个重载函数。
绘制向量中的点
points
。- drawPoints(points, pointCount)
- 参数:
points –
QPointF
pointCount – int
使用当前笔的颜色绘制数组
points
中前pointCount
个点。另请参阅
- drawPoints(arg__1)
- 参数:
arg__1 —— .QPointF点列表
- drawPoints(arg__1)
- 参数:
arg__1 —— .QPoint点列表
- drawPointsNp(x, y)#
- 参数:
x –
PyArrayObject
y –
PyArrayObject
绘制由分别代表 x, y 值的两个一维、等大小的 numpy 数组指定的点。
- drawPolygon(arg__1, arg__2)
- 参数:
arg__1 —— .QPointF点列表
arg__2 –
FillRule
这是一个重载函数。
使用填充规则
fillRule
绘制由给定points
定义的多边形。这是一个重载函数。
使用填充规则
fillRule
绘制由给定points
定义的多边形。- drawPolyline(arg__1)#
- 参数:
arg__1 —— .QPoint点列表
- drawPolyline(arg__1)
- 参数:
arg__1 —— .QPointF点列表
- drawPolyline(polygon)
- 参数:
polygon ——
QPolygon
这是一个重载函数。
使用当前画笔绘制由给定的
points
定义的折线。- drawPolyline(polyline)
- 参数:
polyline –
QPolygonF
这是一个重载函数。
使用当前画笔绘制由给定的
points
定义的折线。这是一个重载函数。
使用当前画笔和画刷绘制当前
rectangle
。- drawRect(rect)
- 参数:
rect –
QRectF
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
使用当前画笔和画刷绘制当前
rectangle
。填充矩形的大小为
rectangle
.size()。绘制线框矩形的大小为rectangle
.size() 加上画笔宽度。rectangle = QRectF(10.0, 20.0, 80.0, 60.0) painter = QPainter(self) painter.drawRect(rectangle)
另请参阅
- drawRect(x1, y1, w, h)
- 参数:
x1 – int
y1 – int
w - int
h - int
这是一个重载函数。
绘制一个以左上角为 (
x
,y
)、给定width
和height
的矩形。使用当前画笔和画刷绘制给定的前
rectCount
个rectangles
。另请参阅
- drawRects(rectangles)
- 参数:
rectangles – .list of QRect
这是一个重载函数。
使用当前画笔和画刷绘制给定的
rectangles
。- drawRects(rectangles)
- 参数:
rectangles – .list of QRectF
这是一个重载函数。
使用当前画笔和画刷绘制给定的
rectangles
。- drawRoundedRect(rect, xRadius, yRadius[, mode=Qt.AbsoluteSize])#
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
绘制具有圆角的给定矩形
rect
。xRadius
和yRadius
参数指定定义圆角矩形的椭圆的半径。当mode
为 Qt::RelativeSize 时,xRadius
和yRadius
分别以百分比指定为矩形宽度的一半和高度的一半,应在 0.0 到 100.0 的范围内。填充矩形的尺寸为 rect.size()。描边矩形的尺寸为 rect.size() 加上笔宽。
rectangle = QRectF(10.0, 20.0, 80.0, 60.0) painter = QPainter(self) painter.drawRoundedRect(rectangle, 20.0, 15.0)
另请参阅
- drawRoundedRect(rect, xRadius, yRadius[, mode=Qt.AbsoluteSize])
这是一个重载函数。
绘制具有圆角的给定矩形
rect
。- drawRoundedRect(x, y, w, h, xRadius, yRadius[, mode=Qt.AbsoluteSize])
- 参数:
x - int
y - int
w - int
h - int
xRadius – float
yRadius – float
模式 –
SizeMode
这是一个重载函数。
绘制具有圆角的给定矩形
x
,y
,w
,h
。- drawStaticText(topLeftPosition, staticText)#
- 参数:
左上角位置 –
QPoint
静态文本 –
QStaticText
这是一个重载函数。
在
topLeftPosition
处绘制staticText
。注意
使用 y 位置作为字体顶部。
- drawStaticText(topLeftPosition, staticText)
- 参数:
左上角位置 –
QPointF
静态文本 –
QStaticText
在给定的
topLeftPosition
处绘制给定的staticText
。文本将通过在画家上设置的字体和转换应用进行绘制。如果画家上的字体和/或转换与初始化
QStaticText
布局时使用的不同,那么布局将需要重新计算。使用prepare()
来用将用于后续绘制的字体和转换初始化staticText
。如果
topLeftPosition
与初始化staticText
时或它上次绘制时的位置不同,则在将文本转换到新位置的细微开销时会有所不同。注意
如果画家的变换不是仿射的,则将使用
drawText()
的常规调用绘制staticText
,从而失去任何潜在的性能改进。- drawStaticText(left, top, staticText)
- 参数:
left – int
top – int
静态文本 –
QStaticText
这是一个重载函数。
在坐标
left
和top
处绘制staticText
。注意
使用 y 位置作为字体顶部。
这是一个重载函数。
以当前定义的文本方向,从指定的
position
处开始绘制给定的text
。默认情况下,
QPainter
以抗锯齿方式绘制文本。- drawText(p, s)
- 参数:
p –
QPointF
s – str
以当前定义的文本方向,从指定的
position
处开始绘制给定的text
。此函数不处理换行符(\n),因为它不能将文本分成多行,并且不能显示换行符。如果想要使用换行符绘制多行文本或者想要文本自动换行,请使用接收矩形作为参数的QPainter::drawText()的重载版本。
默认情况下,
QPainter
以抗锯齿方式绘制文本。该函数返回整个文本的包围矩形。
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
根据指定的
flags
,在提供的rectangle
内绘制给定的text
。如果非null,则将
boundingRect
设置为目标边界矩形,以便包围整个文本。例如,在下图中,虚线表示函数计算出的boundingRect
,虚线表示rectangle
painter = QPainter(self) font = painter.font() font.setPixelSize(48) painter.setFont(font) rectangle = QRect(0, 0, 100, 50) boundingRect = painter.drawText(rectangle, 0, "Hello") pen = painter.pen() pen.setStyle(Qt.DotLine) painter.setPen(pen) painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width())) pen.setStyle(Qt.DashLine) painter.setPen(pen) painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()))
默认情况下,
QPainter
以抗锯齿方式绘制文本。- drawText(r, text[, o=QTextOption()])
- 参数:
r –
QRectF
text – str
o –
QTextOption
这是一个重载函数。
使用
option
来控制其定位、方向和朝向的方式,在指定的rectangle
中绘制给定的文本。在option
中给出的选项会覆盖在QPainter
对象上设置的选项。默认情况下,
QPainter
以抗锯齿方式绘制文本。该函数返回整个文本的包围矩形。
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
在提供的
rectangle
内绘制给定的text
。矩形及其对齐标志定义了文本的锚点。painter = QPainter(self) painter.drawText(rect, Qt.AlignCenter, tr("Qt\nProject"))
如果非null,则将
boundingRect
设置为包围整个文本的目标边界矩形。例如,在下图中,虚线表示函数计算出的boundingRect
,虚线表示rectangle
painter = QPainter(self) font = painter.font() font.setPixelSize(48) painter.setFont(font) rectangle = QRect(0, 0, 100, 50) boundingRect = painter.drawText(rectangle, 0, "Hello") pen = painter.pen() pen.setStyle(Qt.DotLine) painter.setPen(pen) painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width())) pen.setStyle(Qt.DashLine) painter.setPen(pen) painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()))
flags
参数是以下标志的位或操作Qt::AlignLeft
Qt::AlignRight
Qt::AlignHCenter
Qt::AlignJustify
Qt::AlignTop
Qt::AlignBottom
Qt::AlignVCenter
Qt::AlignCenter
Qt::TextDontClip
Qt::TextSingleLine
Qt::TextExpandTabs
Qt::TextShowMnemonic
Qt::TextWordWrap
Qt::TextIncludeTrailingSpaces
默认情况下,
QPainter
以抗锯齿方式绘制文本。- drawText(x, y, s)
- 参数:
x - int
y - int
s – str
这是一个重载函数。
使用画家当前定义的文本方向,在位置(
x
,y
)处绘制给定的text
。默认情况下,
QPainter
以抗锯齿方式绘制文本。- drawText(x, y, w, h, flags, text)
- 参数:
x - int
y - int
w - int
h - int
flags – int
text – str
该函数返回整个文本的包围矩形。
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
在原点为(
x
,y
),宽度为width
和高度为height
的矩形内绘制给定的text
。boundingRect
(如果非null)被设置为包围整个文本的边界矩形。例如,在以下图像中,虚线表示该函数计算的boundingRect
,虚线线表示由x
、y
、width
和height
定义的矩形。painter = QPainter(self) font = painter.font() font.setPixelSize(48) painter.setFont(font) rectangle = QRect(0, 0, 100, 50) boundingRect = painter.drawText(rectangle, 0, "Hello") pen = painter.pen() pen.setStyle(Qt.DotLine) painter.setPen(pen) painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width())) pen.setStyle(Qt.DashLine) painter.setPen(pen) painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()))
flags
参数是以下标志的位或操作Qt::AlignLeft
Qt::AlignRight
Qt::AlignHCenter
Qt::AlignJustify
Qt::AlignTop
Qt::AlignBottom
Qt::AlignVCenter
Qt::AlignCenter
Qt::TextSingleLine
Qt::TextExpandTabs
Qt::TextShowMnemonic
Qt::TextWordWrap
默认情况下,
QPainter
以抗锯齿方式绘制文本。- drawTextItem(x, y, ti)
- 参数:
x - int
y - int
ti –
QTextItem
- drawTiledPixmap(arg__1, arg__2[, pos=QPoint()])#
这是一个重载函数。
在给定位置处,使用其原点绘制给定矩形的平铺
pixmap
。在给定位置处,使用其原点绘制给定矩形的平铺
pixmap
。调用drawTiledPixmap()与多次调用
drawPixmap()
来填充(平铺)使用pixmap的区域相似,但根据底层窗口系统,效率可能更高。drawTiledPixmap()将在高dpi显示器(设备像素比 > 1)上产生与标准dpi显示相同的视觉平铺图案。将
pixmap
上的devicePixelRatio设置为控制瓷砖大小。例如,将其设置为2将将瓷砖宽度高度减半(在1x和2x显示器上),并在2x显示器上产生高分辨率输出。位置偏移始终位于画家坐标系中,与显示设备的devicePixelRatio无关。
另请参阅
- drawTiledPixmap(x, y, w, h, arg__5[, sx=0[, sy=0]])
- 参数:
x - int
y - int
w - int
h - int
arg__5 –
QPixmap
sx – int
sy – int
这是一个重载函数。
在指定的矩形中绘制平铺的
pixmap
。(
x
,y
) 指定要绘制到画布中的左上角点;给定的width
和height
。 (sx
,sy
) 指定要绘制的pixmap
中的左上角点;默认为 (0, 0)。- end()#
- 返回类型:
bool
结束绘画。在绘画过程中使用的任何资源都将被释放。通常不需要调用此方法,因为析构函数会调用它。
如果画家不再活跃,则返回
true
;否则返回false
。另请参阅
- endNativePainting()#
在手动发出本地绘画命令后恢复画家。允许画家在调用其他画家命令之前恢复它所依赖的任何本地状态。
这是一个重载函数。
擦除给定
rectangle
内的区域。- eraseRect(arg__1)
- 参数:
arg__1 –
QRectF
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
擦除给定
rectangle
内的区域。等同于调用fillRect(rectangle, background())
另请参阅
- eraseRect(x, y, w, h)
- 参数:
x - int
y - int
w - int
h - int
这是一个重载函数。
擦除以 (
x
,y
) 为起点,具有给定width
和height
的矩形的内部区域。- fillPath(path, brush)#
- 参数:
路径 –
QPainterPath
brush –
QBrush
使用指定的画笔填充给定的
路径
。不绘制轮廓。或者,您可以使用
QColor
代替QBrush
;使用QColor
参数的QBrush
构造函数将自动创建一个纯色图案画笔。另请参阅
这是一个重载函数。
使用指定的
颜色
填充给定的矩形
。- fillRect(x, y, w, h, color)
- 参数:
x - int
y - int
w - int
h - int
color –
QColor
这是一个重载函数。
从 (
x
,y
) 开始绘制指定宽度和高度的矩形,并使用给定的颜色
填充。- fillRect(x, y, w, h, arg__5)
- 参数:
x - int
y - int
w - int
h - int
arg__5 –
QBrush
这是一个重载函数。
从 (
x
,y
) 开始绘制指定宽度和高度的矩形,并使用给定的画笔
填充。- fillRect(x, y, w, h, c)
- 参数:
x - int
y - int
w - int
h - int
c –
GlobalColor
这是一个重载函数。
从 (
x
,y
) 开始绘制指定宽度和高度的矩形,并使用给定的颜色
填充。- fillRect(x, y, w, h, style)
- 参数:
x - int
y - int
w - int
h - int
style –
BrushStyle
这是一个重载函数。
使用指定的画笔样式填充从(
x
,y
)开始,具有给定宽度
和高度
的矩形。- fillRect(x, y, w, h, preset)
- 参数:
x - int
y - int
w - int
h - int
preset –
Preset
这是一个重载函数。
使用给定的渐变预设填充从(
x
,y
)开始,具有给定宽度
和高度
的矩形。- fillRect(r, c)
- 参数:
r –
QRectF
c –
GlobalColor
这是一个重载函数。
使用指定的
颜色
填充给定的矩形
。- fillRect(r, style)
- 参数:
r –
QRectF
style –
BrushStyle
这是一个重载函数。
使用指定的画笔样式填充给定的
矩形
。这是一个重载函数。
使用指定的渐变预设填充给定的
矩形
。这是一个重载函数。
使用指定的
颜色
填充给定的矩形
。使用指定的
画笔
填充给定的矩形
。或者,您可以使用
QColor
代替QBrush
;使用QColor
参数的QBrush
构造函数将自动创建一个纯色图案画笔。另请参阅
- fillRect(r, c)
- 参数:
r –
QRect
c –
GlobalColor
这是一个重载函数。
使用指定的
颜色
填充给定的矩形
。- fillRect(r, style)
- 参数:
r –
QRect
style –
BrushStyle
这是一个重载函数。
使用指定的画笔样式填充给定的
矩形
。这是一个重载函数。
使用指定的渐变预设填充给定的
矩形
。这是一个重载函数。
使用指定的
画笔
填充给定的矩形
。返回用于绘制文本的当前设置字体。
另请参阅
setFont()
drawText()
Settings
如果绘图器处于活动状态,则返回绘图器的字体信息。否则,返回值未定义。
另请参阅
font()
isActive()
Settings
- fontMetrics()#
- 返回类型:
如果绘图器处于活动状态,则返回绘图器的字体度量。否则,返回值未定义。
另请参阅
font()
isActive()
Settings
- hasClipping()#
- 返回类型:
bool
如果已设置剪辑,则返回
true
;否则返回false
。另请参阅
setClipping()
Clipping
- isActive()#
- 返回类型:
bool
如果已调用
begin()
而未调用end()
,则返回true
;否则返回false
。另请参阅
返回绘图器绘制文本时使用的布局方向。
另请参阅
- opacity()#
- 返回类型:
float
返回绘图器的透明度。默认值为1。
另请参阅
- paintEngine()#
- 返回类型:
如果绘图器处于活动状态,则返回绘制器当前正在操作的绘引擎;否则返回0。
另请参阅
返回绘图器的当前画笔。
另请参阅
setPen()
Settings
- renderHints()#
- 返回类型:
是
RenderHint
的组合。
返回一个标志,指定为此绘图器设置的渲染提示。
另请参阅
setRenderHints()
testRenderHint()
Rendering Quality
- resetTransform()#
重置使用
translate()
、scale()
、shear()
、rotate()
、setWorldTransform()
、setViewport()
和setWindow()
所做的任何变换。另请参阅
坐标变换
- restore()#
恢复当前绘图器状态(从堆栈中弹出一个保存的状态)。
另请参阅
- rotate(a)#
- 参数:
a – float
将坐标系顺时针旋转。给定的
angle
参数以度为单位。另请参阅
setWorldTransform()
Coordinate Transformations
- save()#
保存当前的画家状态(将状态推入堆栈)。必须使用相应的
restore()
; 函数end()
将回滚堆栈。另请参阅
- scale(sx, sy)#
- 参数:
sx – float
sy – float
按照(《sx》,《sy》)的比例缩放坐标系。
另请参阅
setWorldTransform()
Coordinate Transformations
将画家的背景画笔设置为给定的
brush
。背景画笔是在绘制不透明文本、阴影线和位图时填充的画笔。透明背景模式下(默认模式)背景画笔没有效果。
另请参阅
background()
setBackgroundMode()
Settings
将画家的背景模式设置为给定的
mode
。Qt::TransparentMode(默认模式)绘制阴影线和文本时不设置背景像素。Qt::OpaqueMode将这些空间填充为当前背景色。
注意,为了透明地绘制位图或像素图,必须使用
setMask()
。另请参阅
backgroundMode()
setBackground()
Settings
- setBrush(style)#
- 参数:
style –
BrushStyle
这是一个重载函数。
将画家的画笔设置为黑色和指定的
style
。- setBrush(brush)
- 参数:
brush –
QBrush
设置画家的画刷为给定的
brush
。画家的画刷定义了形状如何填充。
另请参阅
brush()
设置
- setBrushOrigin(x, y)#
- 参数:
x - int
y - int
这是一个重载函数。
将画刷的基点设置为点 (
x
,y
)。- setBrushOrigin(arg__1)
- 参数:
arg__1 –
QPointF
将画刷基点设置为
position
。画刷基点指定画家画刷的 (0, 0) 坐标。
请注意,虽然
brushOrigin()
在 Qt 3 中是必要的,以便采用小部件的父级背景,但这种情况不再适用,因为 Qt 4 画家只在您显式告诉它通过将小部件的 autoFillBackground 属性设置为 true 时才绘制背景。另请参阅
- setBrushOrigin(arg__1)
- 参数:
arg__1 –
QPoint
这是一个重载函数。
将画刷的基点设置为给定的
position
。- setClipPath(path[, op=Qt.ReplaceClip])#
- 参数:
路径 –
QPainterPath
op –
ClipOperation
启用裁剪,并将画家的裁剪路径设置为给定的
path
,并使用裁剪operation
。请注意,裁剪路径是在逻辑(画家)坐标中指定的。
另请参阅
- setClipRect(arg__1[, op=Qt.ReplaceClip])#
- 参数:
**arg__1** –
QRect
op –
ClipOperation
这是一个重载函数。
启用裁剪,使用给定的裁剪
operation
将裁剪区域设置为给定的rectangle
。- setClipRect(arg__1[, op=Qt.ReplaceClip])
- 参数:
arg__1 –
QRectF
op –
ClipOperation
启用剪切,并使用给定的剪切操作将剪切区域设置为指定的
rectangle
。默认操作是替换当前剪切矩形。请注意,剪切矩形是使用逻辑(绘图)坐标指定的。
另请参阅
clipRegion()
setClipping()
Clipping
- setClipRect(x, y, w, h[, op=Qt.ReplaceClip])
- 参数:
x - int
y - int
w - int
h - int
op –
ClipOperation
启用剪切,并设置剪切区域为以 (
x
,y
) 为起点,具有给定width
和height
的矩形。- setClipRegion(arg__1[, op=Qt.ReplaceClip])#
- 参数:
arg__1 –
QRegion
op –
ClipOperation
使用指定的剪切操作将剪切区域设置为给定的
region
。默认剪切操作是替换当前剪切区域。请注意,剪切区域是使用逻辑坐标给出的。
另请参阅
clipRegion()
setClipRect()
Clipping
- setClipping(enable)#
- 参数:
enable – bool
当
enable
为 true 时启用剪切,当enable
为 false 时禁用剪切。另请参阅
hasClipping()
Clipping
- setCompositionMode(mode)#
- 参数:
mode –
CompositionMode
将合成模式设置为给定的
mode
。将画笔字体设置为给定的
font
。此字体用于后续的
drawText()
函数。文字颜色与画笔颜色相同。如果您设置的字体不可用,Qt 会找到最接近的匹配字体。使用
font()
将返回您使用 setFont() 设置的字体,而fontInfo()
返回实际使用的字体(可能相同)。另请参阅
font()
drawText()
设置
- setLayoutDirection(direction)#
- 参数:
direction –
LayoutDirection
当绘制文本时,设置画笔使用的布局方向为指定的
direction
。默认为 Qt::LayoutDirectionAuto,它将隐式地从绘制的文本中确定方向。
- setOpacity(opacity)#
- 参数:
opacity – float
设置画笔的不透明度为
opacity
。该值应在 0.0 到 1.0 之间,其中 0.0 表示完全透明,1.0 表示完全不透明。设置在画笔上的不透明度将逐个应用于所有绘图操作。
另请参阅
这是一个重载函数。
设置画家的笔为给定的
style
,宽度为1,颜色为黑色。- setPen(pen)
- 参数:
pen –
QPen
将画家的笔设置为给定的
pen
。该
pen
定义了如何绘制线条和轮廓,同时也定义了文本颜色。另请参阅
pen()
Settings
- setPen(color)
- 参数:
color –
QColor
这是一个重载函数。
将画家的笔设置为风格 Qt::SolidLine,宽度为1和指定的
color
。- setRenderHint(hint[, on=true])#
- 参数:
hint –
RenderHint
on – bool
如果
on
为真,则在画家上设置给定的渲染hint
;否则清除渲染提示。另请参阅
setRenderHints()
renderHints()
Rendering Quality
- setRenderHints(hints[, on=true])#
- 参数:
hints –
RenderHint
组合on – bool
如果
on
为真,则在画家上设置给定的渲染hints
;否则清除渲染提示。另请参阅
setRenderHint()
renderHints()
Rendering Quality
- setTransform(transform[, combine=false])#
- 参数:
transform –
QTransform
combine – bool
设置世界变换矩阵。如果
combine
为 true,则将指定的transform
与当前矩阵合并;否则替换当前矩阵。- setViewTransformEnabled(enable)#
- 参数:
enable – bool
如果
enable
为 true,则开启视图变换;如果enable
为 false,则关闭视图变换。将画家的视图矩形设置为给定的
rectangle
,并开启视图变换。视图矩形是视图变换的一部分。视图指定设备坐标系。其姐妹
window()
指定逻辑坐标系。默认视图矩形与设备矩形相同。
- setViewport(x, y, w, h)
- 参数:
x - int
y - int
w - int
h - int
这是一个重载函数。
将画家的视图矩形设置为以 (
x
,y
) 开始,具有给定width
和height
的矩形。将画家的窗口设置为给定的
矩形
,并启用视图变换。窗口矩形是视图变换的一部分。窗口指定逻辑坐标系。其姐妹,
viewport()
,指定设备坐标系。默认窗口矩形与设备的矩形相同。
- setWindow(x, y, w, h)
- 参数:
x - int
y - int
w - int
h - int
这是一个重载函数。
将画家的窗口设置为以 (
x
,y
) 为起点,并且具有给定的宽度
和高度
的矩形。- setWorldMatrixEnabled(enabled)#
- 参数:
enabled – bool
如果
enable
为真,则启用变换;如果enable
为假,则禁用变换。世界变换矩阵不变。另请参阅
- setWorldTransform(matrix[, combine=false])#
- 参数:
matrix –
QTransform
combine – bool
设置世界变换矩阵。如果
combine
为真,则将指定的matrix
与当前矩阵结合;否则,它将替换当前矩阵。- 剪切(sh, sv)#
- 参数:
sh – float
sv – float
通过 (
sh
,sv
) 剪切坐标系。另请参阅
setWorldTransform()
Coordinate Transformations
- strokePath(path, pen)#
- 参数:
路径 –
QPainterPath
pen –
QPen
使用指定由
pen
的笔绘制路径path
的轮廓(线条)。另请参阅
fillPath()
绘图
- testRenderHint(hint)#
- 参数:
hint –
RenderHint
- 返回类型:
bool
如果
hint
被设置,则返回true
;否则返回false
。- transform()#
- 返回类型:
是
worldTransform()
的别名。返回世界变换矩阵。这是一个重载函数。
通过给定的
offset
平移坐标系。- translate(offset)
- 参数:
offset –
QPointF
通过给定的
offset
平移坐标系;也就是说,给定的offset
会添加到点。另请参阅
setWorldTransform()
Coordinate Transformations
- translate(dx, dy)
- 参数:
dx – float
dy – float
这是一个重载函数。
通过向量 (
dx
,dy
) 平移坐标系。- viewTransformEnabled()#
- 返回类型:
bool
如果启用视图变换,返回
true
;否则返回 false。另请参阅
返回视口矩形。
返回窗口矩形。
- worldMatrixEnabled()#
- 返回类型:
bool
如果启用了世界变换,则返回
true
,否则返回 false。- worldTransform()#
- 返回类型:
返回世界变换矩阵。
另请参阅