PySide6.QtGui.QPainter¶
- class QPainter¶
QPainter类在部件和其他绘图设备上执行低级绘图。More_…继承者:
QStylePainter概要¶
方法¶
def
__init__()def
__enter__()def
__exit__()def
background()def
backgroundMode()def
begin()def
boundingRect()def
brush()def
brushOrigin()def
clipPath()def
clipRegion()def
device()def
drawArc()def
drawChord()def
drawEllipse()def
drawGlyphRun()def
drawImage()def
drawLine()def
drawLines()def
drawPath()def
drawPicture()def
drawPie()def
drawPixmap()def
drawPoint()def
drawPoints()def
drawPointsNp()def
drawPolygon()def
drawPolyline()def
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()def
scale()def
setBackground()def
setBrush()def
setBrushOrigin()def
setClipPath()def
setClipRect()def
setClipRegion()def
setClipping()def
setFont()def
setOpacity()def
setPen()def
setRenderHint()def
setRenderHints()def
setTransform()def
setViewport()def
setWindow()def
shear()def
strokePath()def
testRenderHint()def
transform()def
translate()def
viewport()def
window()def
worldTransform()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
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()。警告
当绘制设备是一个小部件时,
QPainter只能在paintEvent()函数内部或由paintEvent()调用的函数中使用。设置¶
有几个设置可以自定义,以使
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构造函数)会从绘图设备中复制这些属性。您可以随时通过调用
save()函数保存QPainter的状态,该函数将所有可用设置保存在内部堆栈上。restore()函数将它们恢复。绘图¶
QPainter提供了绘制大多数基本图形的函数:drawPoint()、drawPoints()、drawLine()、drawRect()、drawRoundedRect()、drawEllipse()、drawArc()、drawPie()、drawChord()、drawPolyline()、drawPolygon()、drawConvexPolygon()和 drawCubicBezier()。两个便捷函数drawRects()和drawLines(),使用当前的画笔和画刷在给定的 QRects 或 QLines 数组中绘制指定数量的矩形或线条。QPainter类还提供了fillRect()函数,该函数用给定的QBrush填充给定的 QRect,以及eraseRect()函数,该函数擦除给定矩形内的区域。所有这些函数都有整数和浮点数版本。

基本绘图示例
基本绘图示例展示了如何使用
QPainter类以多种样式显示基本图形原语。如果你需要绘制一个复杂的形状,特别是如果需要重复绘制,考虑创建一个
QPainterPath并使用drawPath()来绘制它。画家路径示例
QPainterPath类为绘画操作提供了一个容器,使得图形形状可以被构建和重用。画家路径示例展示了如何使用画家路径来构建复杂的形状进行渲染。

QPainter还提供了fillPath()函数,该函数用给定的QBrush填充给定的QPainterPath,以及strokePath()函数,该函数绘制给定路径的轮廓(即描边路径)。另请参阅Vector Deformation示例,该示例展示了如何使用高级矢量技术通过
QPainterPath绘制文本,Gradients示例展示了Qt中可用的不同类型的渐变,以及Path Stroking示例,该示例展示了Qt内置的虚线模式,并展示了如何使用自定义模式来扩展可用模式的范围。向量变形
梯度
路径描边



文本绘制是使用
drawText()完成的。当你需要精细定位时,boundingRect()会告诉你给定的drawText()命令将在哪里绘制。绘制位图和图像¶
有一些函数用于绘制像素图/图像,即
drawPixmap()、drawImage()和drawTiledPixmap()。drawPixmap()和drawImage()产生相同的结果,只是drawPixmap()在屏幕上更快,而drawImage()在QPrinter或其他设备上可能更快。有一个
drawPicture()函数,用于绘制整个QPicture的内容。drawPicture()函数是唯一一个忽略所有画家设置的函数,因为QPicture有自己的设置。绘制高分辨率的Pixmaps和图像¶
高分辨率的像素图具有大于1的设备像素比值(参见
QImageReader,devicePixelRatio())。如果它与底层的QPaintDevice的值匹配,则直接绘制到设备上,无需应用额外的变换。例如,当绘制一个64x64像素大小的
QPixmap到一个设备像素比为2的高DPI屏幕上时,该屏幕的设备像素比也为2。请注意,此时位图在用户空间中实际上是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)
比较使用整数和浮点数的同心圆,以及是否使用抗锯齿渲染。使用浮点精度版本可以产生均匀间隔的环。抗锯齿渲染可以产生平滑的圆。

RenderHint枚举指定了可能被任何给定引擎遵守或不遵守的标志给QPainter。Antialiasing表示引擎应尽可能对图元的边缘进行抗锯齿处理,TextAntialiasing表示引擎应尽可能对文本进行抗锯齿处理,而SmoothPixmapTransform表示引擎应使用平滑的像素图变换算法。renderHints()函数返回一个标志,该标志指定为此画家设置的渲染提示。使用setRenderHint()函数来设置或清除当前设置的RenderHints。坐标变换¶
通常情况下,
QPainter在设备的自身坐标系(通常是像素)上操作,但QPainter对坐标变换有很好的支持。最常用的变换包括缩放、旋转、平移和剪切。使用
scale()函数按给定偏移量缩放坐标系,使用rotate()函数顺时针旋转,使用translate()平移(即向点添加给定偏移量)。您还可以使用shear()函数围绕原点扭曲坐标系。请参阅仿射变换示例以查看剪切坐标系的可视化效果。另请参阅Transformations示例,该示例展示了变换如何影响
QPainter渲染图形原语的方式。特别是它展示了变换的顺序如何影响结果。仿射变换示例
仿射变换示例展示了Qt在绘画操作中执行仿射变换的能力。该演示还允许用户尝试变换操作并立即查看结果。

所有的变换操作都在变换
worldTransform()上进行。矩阵将平面上的一个点变换为另一个点。有关变换矩阵的更多信息,请参阅坐标系和QTransform文档。setWorldTransform()函数可以替换或添加到当前设置的worldTransform()。resetTransform()函数重置了使用translate()、scale()、shear()、rotate()、setWorldTransform()、setViewport()和setWindow()函数进行的任何变换。deviceTransform()返回从逻辑坐标转换到平台相关绘图设备的设备坐标的矩阵。后一个函数仅在平台相关句柄上使用平台绘图命令时需要使用,且平台本身不进行变换。当使用
QPainter进行绘制时,我们使用逻辑坐标指定点,然后这些点会被转换为绘图设备的物理坐标。逻辑坐标到物理坐标的映射由QPainter的combinedTransform()处理,它是viewport()、window()和worldTransform()的组合。viewport()表示指定任意矩形的物理坐标,window()描述相同矩形的逻辑坐标,而worldTransform()与变换矩阵相同。另请参阅 Coordinate System
裁剪¶
QPainter可以将任何绘图操作裁剪到矩形、区域或矢量路径。当前裁剪可以通过函数clipRegion()和clipPath()获取。路径或区域哪个更优(更快)取决于底层的paintEngine()。例如,QImage绘图引擎更倾向于路径,而 X11 绘图引擎更倾向于区域。设置裁剪是在绘图器的逻辑坐标中完成的。在
QPainter的裁剪之后,绘图设备也可能进行裁剪。例如,大多数小部件会裁剪掉子小部件使用的像素,而大多数打印机会裁剪掉纸张边缘附近的区域。这种额外的裁剪不会通过clipRegion()或hasClipping()的返回值反映出来。组合模式¶
QPainter提供了CompositionMode枚举,该枚举定义了数字图像合成的 Porter-Duff 规则;它描述了一种将一幅图像(源图像)中的像素与另一幅图像(目标图像)中的像素组合的模型。两种最常见的组合形式是
Source和SourceOver。Source用于将不透明对象绘制到绘图设备上。在这种模式下,源中的每个像素都会替换目标中的相应像素。在SourceOver组合模式下,源对象是透明的,并且绘制在目标的顶部。请注意,组合变换是按像素操作的。因此,使用图形原语本身与其边界矩形之间存在差异:边界矩形包含alpha == 0的像素(即原语周围的像素)。这些像素将覆盖其他图像的像素,有效地清除这些像素,而原语仅覆盖其自身区域。

组合模式示例
组合模式示例,可在Qt的示例目录中找到,允许您尝试各种组合模式并立即查看结果。
限制¶
如果您在使用Qt的基于栅格的绘图引擎时使用坐标,需要注意的是,虽然可以使用大于+/- 215的坐标,但不能保证在此范围之外的坐标所执行的任何绘图会显示出来;绘图可能会被裁剪。这是由于在实现中使用了
short int。Qt的描边器生成的轮廓在处理曲线形状时只是一个近似值。在大多数情况下,无法使用另一个贝塞尔曲线段来表示贝塞尔曲线段的轮廓,因此Qt通过使用多个较小的曲线来近似曲线轮廓。出于性能原因,Qt用于这些轮廓的曲线数量是有限的,因此当使用较大的笔宽或比例时,轮廓误差会增加。为了生成误差较小的轮廓,可以使用
QPainterPathStroker类,该类具有setCurveThreshold成员函数,允许用户指定误差容限。另一种解决方法是将路径首先转换为多边形,然后绘制多边形。性能¶
QPainter是一个丰富的框架,允许开发者进行各种图形操作,如渐变、合成模式和矢量图形。而且QPainter可以在各种不同的硬件和软件堆栈上实现这些操作。自然地,硬件和软件的组合对性能有一定的影响,确保每个操作在与各种合成模式、画笔、裁剪、变换等的组合中都能快速运行,几乎是一个不可能完成的任务,因为排列组合的数量太多。作为一种折衷方案,我们选择了QPainterAPI 和后端的一个子集,在这个子集中,我们能够合理地保证在给定的硬件和软件组合下性能尽可能好。我们关注的高性能引擎后端有:
光栅 - 此后端在纯软件中实现所有渲染,并始终用于渲染到QImages中。为了获得最佳性能,仅使用格式类型
Format_ARGB32_Premultiplied、Format_RGB32或Format_RGB16。任何其他格式,包括Format_ARGB32,性能显著较差。此引擎默认用于QWidget和QPixmap。OpenGL 2.0 (ES) - 此后端是硬件加速图形的主要后端。它可以在支持OpenGL 2.0或OpenGL/ES 2.0规范的桌面机器和嵌入式设备上运行。这包括过去几年生产的大多数图形芯片。可以通过在QOpenGLWidget上使用
QPainter来启用引擎。
这些操作是:
简单的变换,包括平移和缩放,以及0度、90度、180度、270度的旋转。
drawPixmap()结合简单的变换和不平滑变换模式下的不透明度(QPainter::SmoothPixmapTransform未作为渲染提示启用)。矩形填充纯色、双色线性渐变和简单变换。
使用简单变换和相交剪裁进行矩形剪裁。
组合模式
QPainter::CompositionMode_Source和CompositionMode_SourceOver。使用纯色和双色线性渐变填充的圆角矩形。
3x3 修补的像素图,通过 qDrawBorderPixmap。
此列表给出了在性能关键型应用程序中可以安全使用的功能的指示。对于某些设置,其他操作也可能很快,但在广泛使用它们之前,建议在软件最终运行的系统上进行基准测试和验证。也有一些情况下,使用昂贵的操作是可以接受的,例如当结果缓存在
QPixmap中时。另请参阅
QPaintDeviceQPaintEngineQt SVGBasic 绘图 示例绘图 实用 函数- class RenderHint¶
(继承自
enum.Flag) Renderhints 用于指定标志给QPainter,这些标志可能被任何给定的引擎尊重或不尊重。常量
描述
QPainter.Antialiasing
表示引擎应尽可能对图元的边缘进行抗锯齿处理。
QPainter.TextAntialiasing
表示引擎应尽可能对文本进行抗锯齿处理。要强制禁用文本的抗锯齿处理,请不要使用此提示。相反,请在字体的样式策略中设置
NoAntialias。QPainter.SmoothPixmapTransform
表示引擎应使用平滑的像素图变换算法(如双线性)而不是最近邻算法。
QPainter.VerticalSubpixelPositioning
如果字体引擎支持,允许文本在垂直和水平方向上以像素的分数位置进行定位。目前在所有平台上,当提示偏好为
PreferNoHinting时,Freetype支持此功能,并且在macOS上也支持。对于大多数用例,这不会提高视觉质量,但可能会增加内存消耗并略微降低文本渲染性能。因此,除非用例需要,否则不建议启用此功能。一个可能的用例是将字形与其他视觉基元对齐。此值在Qt 6.1中添加。QPainter.LosslessImageRendering
尽可能使用无损图像渲染。目前,此提示仅在通过QPrinter或
QPdfWriter使用QPainter输出PDF文件时使用,其中drawImage()/drawPixmap()调用将使用无损压缩算法而不是有损的JPEG压缩来编码图像。此值在Qt 5.13中添加。QPainter.NonCosmeticBrushPatterns
当使用预定义图案样式的画笔进行绘制时,图案也会随着被绘制的对象一起变换。默认情况下,图案被视为装饰性的,因此图案像素将直接映射到设备像素,不受任何活动变换的影响。此值在Qt 6.4中添加。
另请参阅
renderHints()setRenderHint()渲染 质量
- class PixmapFragmentHint¶
常量
描述
QPainter.OpaqueHint
(继承自
enum.Flag) 表示要绘制的像素片段是不透明的。不透明的片段绘制速度可能更快。另请参阅
drawPixmapFragments()PixmapFragment在版本4.7中添加。
- class CompositionMode¶
定义了数字图像合成支持的模式。合成模式用于指定一个图像(源)中的像素如何与另一个图像(目标)中的像素合并。
请注意,以RasterOp为前缀的位图光栅操作模式仅在X11和光栅绘图引擎中原生支持。这意味着在Mac上使用这些模式的唯一方法是通过
QImage。对于带有alpha组件的笔和画笔,不支持RasterOp表示的混合模式。此外,开启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值根据源的值减少。此模式是CompositionMode_SourceIn的逆操作。
QPainter.CompositionMode_SourceOut
输出是源,其中alpha通过目标的反向减少。
QPainter.CompositionMode_DestinationOut
输出是目标,其中alpha通过源的逆减少。此模式是CompositionMode_SourceOut的逆。
QPainter.CompositionMode_SourceAtop
源像素在目标像素的顶部混合,源像素的透明度由目标像素的透明度减少。
QPainter.CompositionMode_DestinationAtop
目标像素在源像素之上混合,目标像素的透明度由目标像素的透明度减少。此模式是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_SourceOrDestination
对源像素和目标像素执行按位或操作(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
执行一个位操作,其中源被反转然后与目标进行AND操作((NOT src) AND dst)。
QPainter.RasterOp_SourceAndNotDestination
执行一个位操作,其中源像素与反转的目标像素进行AND操作(src AND (NOT dst))。
QPainter.RasterOp_NotSourceOrDestination
执行一个位操作,其中源被反转,然后与目标进行OR操作((NOT src) OR dst)。
QPainter.RasterOp_ClearDestination
目标中的像素被清除(设置为0),与源无关。
QPainter.RasterOp_SetDestination
目标中的像素被设置(设置为1),与源无关。
QPainter.RasterOp_NotDestination
执行一个位操作,其中目标像素被反转(NOT dst)。
QPainter.RasterOp_SourceOrNotDestination
执行位操作,其中源像素与反转的目标像素进行OR操作(src OR (NOT dst))。
另请参阅
compositionMode()setCompositionMode()组合模式图像组合示例
- __init__()¶
构建一个画家。
- __init__(device)
- Parameters:
设备 –
QPaintDevice
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
构建一个立即开始绘制
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()在外部设备(例如打印机)上进行绘制。- __exit__(arg__1, arg__2, arg__3)¶
- Parameters:
arg__1 – 对象
arg__2 – 对象
arg__3 – 对象
返回当前的背景画刷。
另请参阅
返回当前的背景模式。
另请参阅
- begin(device)¶
- Parameters:
设备 –
QPaintDevice- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
开始绘制绘画设备,如果成功则返回
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()在给定的rectangle内绘制时,text的边界矩形,并带有指定的flags。- boundingRect(rect, text[, o=QTextOption()])
- Parameters:
rect –
QRectF文本 – str
o –
QTextOption
- Return type:
这是一个重载函数。
这个重载函数不是将标志指定为Qt::AlignmentFlag和Qt::TextFlag的按位或,而是接受一个
option参数。QTextOption类提供了对一般富文本属性的描述。另请参阅
返回当使用当前设置的
font()在给定的rectangle内绘制时,text的边界矩形,并指定flags;即该函数告诉你当给定相同参数时,drawText()函数将在何处绘制。如果使用指定的
flags,text无法适应给定的rectangle,函数将返回所需的矩形。flags参数是以下标志的按位或:Qt::AlignLeft
Qt::AlignRight
Qt::AlignHCenter
Qt::AlignTop
Qt::AlignBottom
Qt::AlignVCenter
Qt::AlignCenter
Qt::TextSingleLine
Qt::TextExpandTabs
Qt::TextShowMnemonic
Qt::文本自动换行
Qt::TextIncludeTrailingSpaces
如果设置了多个水平或垂直对齐标志,则结果对齐方式未定义。
另请参阅
drawText()TextFlag- boundingRect(x, y, w, h, flags, text)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
flags – int
文本 – str
- Return type:
这是一个重载函数。
返回给定
text在矩形内绘制时的边界矩形,该矩形从点(x,y)开始,宽度为w,高度为h。返回画家的当前画笔。
另请参阅
setBrush()设置返回当前设置的画笔原点。
另请参阅
如果存在剪辑,则返回当前剪辑的边界矩形;否则返回一个空矩形。请注意,剪辑区域是以逻辑坐标给出的。
边界矩形不保证是紧密的。
- clipPath()¶
- Return type:
返回当前剪贴路径的逻辑坐标。
警告
QPainter不会显式存储组合的裁剪区域,因为这是由底层的QPaintEngine处理的,所以路径是按需重新创建并转换到当前的逻辑坐标系中的。这可能是一个昂贵的操作。返回当前设置的裁剪区域。请注意,裁剪区域是以逻辑坐标给出的。
警告
QPainter不会显式存储组合的裁剪区域,因为这是由底层的QPaintEngine处理的,所以路径是按需重新创建并转换到当前的逻辑坐标系中的。这可能是一个昂贵的操作。- combinedTransform()¶
- Return type:
返回结合当前窗口/视口和世界变换的变换矩阵。
- compositionMode()¶
- Return type:
返回当前的组合模式。
- device()¶
- Return type:
返回此画家当前正在绘制的绘制设备,如果画家未激活,则返回
None。另请参阅
- deviceTransform()¶
- Return type:
返回将逻辑坐标转换为平台相关绘图设备的设备坐标的矩阵。
此函数仅在平台相关句柄(Qt::HANDLE)上使用平台绘制命令时需要使用,且平台本身不进行转换。
PaintEngineFeature枚举可以查询以确定平台是否执行转换。这是一个重载函数。
绘制由给定的
rectangle、startAngle和spanAngle定义的弧线。- drawArc(rect, a, alen)
- Parameters:
rect –
QRectFa – 整数
alen – int
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
绘制由给定的
rectangle、startAngle和spanAngle定义的弧线。startAngle和spanAngle必须以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)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
a – 整数
alen – int
这是一个重载函数。
绘制由矩形定义的弧线,起始于(
x,y),具有指定的width和height,以及给定的startAngle和spanAngle。这是一个重载函数。
绘制由给定的
rectangle、startAngle和spanAngle定义的弦。- drawChord(rect, a, alen)
- Parameters:
rect –
QRectFa – 整数
alen – int
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
绘制由给定的
rectangle、startAngle和spanAngle定义的弦。该弦使用当前的brush()填充。startAngle 和 spanAngle 必须以 1/16 度为单位指定,即一个完整的圆等于 5760(16 * 360)。角度的正值表示逆时针方向,而负值表示顺时针方向。零度位于 3 点钟位置。
- drawChord(x, y, w, h, a, alen)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
a – 整数
alen – int
这是一个重载函数。
绘制由矩形定义的弦,该矩形从(
x,y)开始,具有指定的width和height,以及给定的startAngle和spanAngle。- drawConvexPolygon(points)¶
- Parameters:
points – QPoint 的列表
- drawConvexPolygon(points)
- Parameters:
points – QPointF 的列表
- drawConvexPolygon(polygon)
- Parameters:
多边形 –
QPolygon
这是一个重载函数。
使用当前的笔和画刷绘制由
polygon定义的凸多边形。- drawConvexPolygon(polygon)
- Parameters:
多边形 –
QPolygonF
这是一个重载函数。
使用当前的笔和刷子绘制由
polygon定义的凸多边形。这是一个重载函数。
绘制由给定的
rectangle定义的椭圆。- drawEllipse(r)
- Parameters:
r –
QRectF
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
绘制由给定的
rectangle定义的椭圆。填充的椭圆的大小为
rectangle.size()。描边的椭圆的大小为rectangle.size()加上笔的宽度。- drawEllipse(center, rx, ry)
- Parameters:
center –
QPointrx – 整数
ry – int
这是一个重载函数。
绘制位于
center的椭圆,半径为rx和ry。- drawEllipse(center, rx, ry)
- Parameters:
center –
QPointFrx – 浮点数
ry – 浮点数
这是一个重载函数。
绘制位于
center位置的椭圆,半径为rx和ry。- drawEllipse(x, y, w, h)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
这是一个重载函数。
绘制由矩形定义的椭圆,该矩形从(
x,y)开始,具有给定的width和height。在
position处绘制由glyphs表示的符号。position给出了符号字符串基线的边缘。符号将从glyphs上选择的字体中获取,并根据glyphs中的位置偏移量进行定位。这是一个重载函数。
在给定的
point处绘制给定的image。这是一个重载函数。
在给定的
point处绘制给定的image。这是一个重载函数。
将给定的
image绘制到给定的rectangle中。注意
如果图像和矩形的大小不一致,图像将被缩放以适应矩形。
这是一个重载函数。
将给定的
image绘制到给定的rectangle中。注意
如果图像和矩形的大小不一致,图像将被缩放以适应矩形。
- drawImage(p, image, sr[, flags=Qt.AutoColor])
- Parameters:
p –
QPointimage –
QImagesr –
QRectflags –
ImageConversionFlag的组合
这是一个重载函数。
绘制给定
image的矩形部分source,其原点位于给定的point。- drawImage(p, image, sr[, flags=Qt.AutoColor])
- Parameters:
p –
QPointFimage –
QImagesr –
QRectFflags –
ImageConversionFlag的组合
这是一个重载函数。
绘制给定
image的矩形部分source,其原点位于给定的point。- drawImage(targetRect, image, sourceRect[, flags=Qt.AutoColor])
- Parameters:
targetRect –
QRectimage –
QImagesourceRect –
QRectflags –
ImageConversionFlag的组合
这是一个重载函数。
将给定的
image的矩形部分source绘制到绘图设备中的target矩形中。注意
如果图像和矩形的大小不一致,图像将被缩放以适应矩形。
- drawImage(targetRect, image, sourceRect[, flags=Qt.AutoColor])
- Parameters:
targetRect –
QRectFimage –
QImagesourceRect –
QRectFflags –
ImageConversionFlag的组合
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将给定
image的矩形部分source绘制到绘图设备中的target矩形中。注意
如果图像和矩形的大小不一致,图像将被缩放以适应矩形。
注意
请参阅
Drawing High Resolution Versions of Pixmaps and Images了解这是如何受到devicePixelRatio()影响的。如果图像需要修改以适应较低分辨率的结果(例如从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]]]]])
- Parameters:
x – 整数
y – 整数
image –
QImagesx – int
sy – 整数
sw – 整数
sh – 整数
flags –
ImageConversionFlag的组合
这是一个重载函数。
在 (
x,y) 处绘制图像,通过将image的一部分复制到绘图设备中。(
x,y) 指定了要绘制到的绘图设备中的左上角点。(sx,sy) 指定了要绘制的image中的左上角点。默认值为 (0, 0)。(
sw,sh) 指定要绘制的图像的大小。默认值 (0, 0)(以及负值)表示一直到图像的右下角。这是一个重载函数。
绘制由
line定义的线条。- drawLine(line)
- Parameters:
线 –
QLineF
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
绘制由
line定义的线条。
line = QLineF(10.0, 80.0, 90.0, 20.0) painter = QPainter(self) painter.drawLine(line)
另请参阅
这是一个重载函数。
从
p1到p2画一条线。这是一个重载函数。
从
p1到p2画一条线。- drawLine(x1, y1, x2, y2)
- Parameters:
x1 – 整数
y1 – 整数
x2 – 整数
y2 – 整数
这是一个重载函数。
从 (
x1,y1) 到 (x2,y2) 画一条线。- drawLines(lines)¶
- Parameters:
lines – QLine 的列表
这是一个重载函数。
使用当前的笔和画刷绘制由列表
lines定义的线条集合。- drawLines(lines)
- Parameters:
lines – QLineF 的列表
这是一个重载函数。
使用当前的笔和画刷绘制由列表
lines定义的线条集合。- drawLines(pointPairs)
- Parameters:
pointPairs – QPoint 的列表
这是一个重载函数。
使用当前画笔在向量
pointPairs中的每对点之间绘制一条线。- drawLines(pointPairs)
- Parameters:
pointPairs – QPointF 的列表
这是一个重载函数。
使用当前画笔为向量
pointPairs中的每对点绘制一条线。如果数组中的点数为奇数,则最后一个点将被忽略。- drawLines(lines, lineCount)
- Parameters:
lines –
QLineFlineCount – int
使用当前笔绘制数组
lines中的前lineCount行。另请参阅
- drawPath(path)¶
- Parameters:
路径 –
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)
另请参阅
the Painter Paths examplethe Vector Deformation example这是一个重载函数。
在给定的
point处重放给定的picture。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
在给定的
point处重放给定的picture。QPicture类是一个绘图设备,用于记录和重放QPainter命令。图片以平台无关的格式将绘图命令序列化到 IO 设备。所有可以在小部件或像素图上绘制的内容也可以存储在图片中。此函数与
play()在调用时point= QPointF(0, 0)的情况下完全相同。注意
画家的状态由这个函数保存。
图片 = QPicture() 点 = QPointF(10.0, 20.0) 图片.加载("drawing.pic") 画家 = QPainter(self) 画家.绘制图片(0, 0, 图片)
另请参阅
- drawPicture(x, y, picture)
- Parameters:
x – 整数
y – 整数
图片 –
QPicture
这是一个重载函数。
在点 (
x,y) 处绘制给定的picture。这是一个重载函数。
绘制由给定的
rectangle、startAngle和spanAngle定义的饼图。- drawPie(rect, a, alen)
- Parameters:
rect –
QRectFa – 整数
alen – int
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
绘制一个由给定的
rectangle、startAngle和spanAngle定义的饼图。饼图填充了当前的
brush()。startAngle 和 spanAngle 必须以 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.drawPie(rectangle, startAngle, spanAngle)
另请参阅
- drawPie(x, y, w, h, a, alen)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
a – 整数
alen – int
这是一个重载函数。
绘制由矩形定义的饼图,矩形从 (
x,y) 开始,具有指定的width和height,以及给定的startAngle和spanAngle。这是一个重载函数。
在给定的
point处绘制给定的pixmap。这是一个重载函数。
在给定的
point处绘制给定的pixmap。这是一个重载函数。
将给定的
pixmap绘制到给定的rectangle中。注意
如果 pixmap 和矩形的大小不一致,pixmap 会被缩放以适应矩形。
这是一个重载函数。
绘制给定
pixmap的矩形部分source,其原点位于给定的point。这是一个重载函数。
绘制给定
pixmap的矩形部分source,其原点位于给定的point。- drawPixmap(targetRect, pixmap, sourceRect)
这是一个重载函数。
将给定的
pixmap的矩形部分source绘制到绘图设备中的给定target。注意
如果 pixmap 和矩形的大小不一致,pixmap 会被缩放以适应矩形。
- drawPixmap(targetRect, pixmap, sourceRect)
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将给定的
pixmap的矩形部分source绘制到绘图设备中的给定target。注意
如果 pixmap 和矩形的大小不一致,pixmap 会被缩放以适应矩形。
注意
请参阅
Drawing High Resolution Versions of Pixmaps and Images了解这是如何受到devicePixelRatio()影响的。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()- drawPixmap(x, y, pm)
- Parameters:
x – 整数
y – 整数
pm –
QPixmap
这是一个重载函数。
在位置 (
x,y) 绘制给定的pixmap。- drawPixmap(x, y, w, h, pm)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
pm –
QPixmap
这是一个重载函数。
将
pixmap绘制到位置 (x,y) 的矩形中,并具有给定的width和height。- drawPixmap(x, y, pm, sx, sy, sw, sh)
- Parameters:
x – 整数
y – 整数
pm –
QPixmapsx – int
sy – 整数
sw – 整数
sh – 整数
这是一个重载函数。
在 (
x,y) 处绘制一个 pixmap,通过将给定的pixmap的一部分复制到绘图设备中。(
x,y) 指定要绘制到绘图设备上的左上角点。(sx,sy) 指定要绘制的pixmap中的左上角点。默认值为 (0, 0)。(
sw,sh) 指定要绘制的像素图的大小。默认值 (0, 0)(以及负值)表示一直到像素图的右下角。- drawPixmap(x, y, w, h, pm, sx, sy, sw, sh)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
pm –
QPixmapsx – int
sy – 整数
sw – 整数
sh – 整数
这是一个重载函数。
绘制给定
pixmap的矩形部分,原点为 (sx,sy),宽度为sw,高度为sh,在点 (x,y) 处绘制,宽度为w,高度为h。如果 sw 或 sh 等于零,则使用 pixmap 的宽度/高度,并根据偏移量 sx/sy 进行调整;- drawPixmapFragments(fragments, fragmentCount, pixmap[, hints=QPainter.PixmapFragmentHints()])¶
- Parameters:
fragments –
PixmapFragmentfragmentCount – int
pixmap –
QPixmaphints –
PixmapFragmentHint的组合
此函数用于以不同的比例、旋转和不透明度在多个位置绘制
pixmap或其子矩形。fragments是一个包含fragmentCount元素的数组,用于指定绘制每个pixmap片段时使用的参数。hints参数可用于传递绘图提示。这个函数可能比多次调用
drawPixmap()更快,因为后端可以优化状态更改。另请参阅
PixmapFragmentPixmapFragmentHint这是一个重载函数。
使用当前笔的颜色在给定的
position处绘制一个点。- drawPoint(pt)
- Parameters:
pt –
QPointF
使用当前笔的颜色在给定的
position处绘制一个点。另请参阅
- drawPoint(x, y)
- Parameters:
x – 整数
y – 整数
这是一个重载函数。
在位置 (
x,y) 绘制一个点。- drawPoints(points)¶
- Parameters:
points – QPoint 的列表
- drawPoints(points)
- Parameters:
points – QPointF 的列表
- drawPoints(points)
- Parameters:
点 –
QPolygon
这是一个重载函数。
绘制向量
points中的点。- drawPoints(points)
- Parameters:
点 –
QPolygonF
这是一个重载函数。
绘制向量
points中的点。- drawPoints(points, pointCount)
- Parameters:
points –
QPointFpointCount – int
使用当前笔的颜色绘制数组
points中的前pointCount个点。另请参阅
- drawPointsNp(x, y)¶
- Parameters:
x –
PyArrayObjecty –
PyArrayObject
绘制由两个一维、大小相等的numpy数组指定的点,分别表示x和y值。
- drawPolygon(points, fill_rule)
- Parameters:
points – QPointF 的列表
fill_rule –
FillRule
这是一个重载函数。
使用填充规则
fillRule绘制由给定points定义的多边形。这是一个重载函数。
使用填充规则
fillRule绘制由给定points定义的多边形。- drawPolyline(points)¶
- Parameters:
points – QPoint 的列表
- drawPolyline(points)
- Parameters:
points – QPointF 的列表
- drawPolyline(polygon)
- Parameters:
多边形 –
QPolygon
这是一个重载函数。
使用当前画笔绘制由给定的
points定义的多段线。- drawPolyline(polyline)
- Parameters:
折线 –
QPolygonF
这是一个重载函数。
使用当前画笔绘制由给定的
points定义的多段线。这是一个重载函数。
使用当前的笔和刷子绘制当前的
rectangle。- drawRect(rect)
- Parameters:
矩形 –
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)
- Parameters:
x1 – 整数
y1 – 整数
w – 整数
h – 整数
这是一个重载函数。
绘制一个左上角位于(
x,y)的矩形,并具有给定的宽度和高度。- drawRects(rectangles)¶
- Parameters:
矩形 – .QRect 的列表
这是一个重载函数。
使用当前的笔和刷子绘制给定的
rectangles。- drawRects(rectangles)
- Parameters:
矩形 – .QRectF 的列表
这是一个重载函数。
使用当前的笔和刷子绘制给定的
rectangles。- drawRects(rects, rectCount)
- Parameters:
rects –
QRectFrectCount – int
使用当前的笔和刷子绘制给定的
rectangles中的前rectCount个矩形。另请参阅
- drawRoundedRect(rect, xRadius, yRadius[, mode=Qt.AbsoluteSize])¶
这是一个重载函数。
绘制具有圆角的给定矩形
rect。- 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(x, y, w, h, xRadius, yRadius[, mode=Qt.AbsoluteSize])
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
xRadius – 浮点数
yRadius – 浮点数
mode –
SizeMode
这是一个重载函数。
绘制具有圆角的给定矩形
x,y,w,h。- drawStaticText(topLeftPosition, staticText)¶
- Parameters:
topLeftPosition –
QPointstaticText –
QStaticText
这是一个重载函数。
在
topLeftPosition处绘制staticText。注意
y位置用作字体的顶部。
- drawStaticText(topLeftPosition, staticText)
- Parameters:
topLeftPosition –
QPointFstaticText –
QStaticText
在给定的
topLeftPosition处绘制给定的staticText。文本将使用画家的字体和变换设置进行绘制。如果画家的字体和/或变换设置与用于初始化
QStaticText布局的设置不同,则布局将需要重新计算。使用prepare()来初始化staticText,并使用稍后将用于绘制的字体和变换。如果
topLeftPosition与staticText初始化时或上次绘制时的位置不同,那么在将文本转换到新位置时会有轻微的开销。注意
如果画家的变换不是仿射的,那么
staticText将通过常规调用drawText()来绘制,从而失去任何性能提升的潜力。- drawStaticText(left, top, staticText)
- Parameters:
left – int
top – int
staticText –
QStaticText
这是一个重载函数。
在坐标
left和top处绘制staticText。注意
y位置用作字体的顶部。
这是一个重载函数。
使用当前定义的文本方向绘制给定的
text,从给定的position开始。默认情况下,
QPainter绘制文本时会进行抗锯齿处理。- drawText(p, s)
- Parameters:
p –
QPointFs – 字符串
使用当前定义的文本方向绘制给定的
text,从给定的position开始。此函数不处理换行符 (\n),因为它不能将文本分成多行,也不能显示换行符。如果您想绘制带有换行符的多行文本,或者希望文本自动换行,请使用接受矩形的 QPainter::drawText() 重载。
默认情况下,
QPainter绘制文本时会进行抗锯齿处理。- drawText(r, text[, o=QTextOption()])
- Parameters:
r –
QRectF文本 – str
o –
QTextOption
这是一个重载函数。
在指定的
rectangle中使用option绘制给定的text,以控制其位置、方向和方向。option中给出的选项会覆盖QPainter对象本身设置的选项。默认情况下,
QPainter绘制文本时会进行抗锯齿处理。- drawText(x, y, s)
- Parameters:
x – 整数
y – 整数
s – 字符串
这是一个重载函数。
在位置 (
x,y) 绘制给定的text,使用画布当前定义的文本方向。默认情况下,
QPainter绘制文本时会进行抗锯齿处理。该函数返回包含整个文本的边界矩形。
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
在提供的
rectangle内根据指定的flags绘制给定的text。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绘制文本时会进行抗锯齿处理。该函数返回包含整个文本的边界矩形。
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
在提供的
rectangle内绘制给定的text。rectangle与对齐flags一起定义了text的锚点。
painter = QPainter(self) painter.drawText(rect, Qt.AlignCenter, tr("Qt\n项目"))
如果
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::文本自动换行
Qt::TextIncludeTrailingSpaces
默认情况下,
QPainter绘制文本时会进行抗锯齿处理。- drawText(x, y, w, h, flags, text)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
flags – int
文本 – str
该函数返回包含整个文本的边界矩形。
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
在原点为 (
x,y)、宽度为width和高度为height的矩形内绘制给定的text。如果
boundingRect不为空,它将被设置为包围整个文本所需的边界矩形。例如,在下图中,虚线表示由函数计算出的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::文本自动换行
默认情况下,
QPainter绘制文本时会进行抗锯齿处理。- drawTextItem(x, y, ti)
- Parameters:
x – 整数
y – 整数
ti –
QTextItem
- drawTiledPixmap(rectangle, pixmap[, position=QPoint()])¶
这是一个重载函数。
在给定的
rectangle内绘制一个平铺的pixmap,其原点位于给定的position。- drawTiledPixmap(rect, pm[, offset=QPointF()])
在给定的
rectangle内绘制一个平铺的pixmap,其原点位于给定的position。调用 drawTiledPixmap() 类似于多次调用
drawPixmap()来用 pixmap 填充(平铺)一个区域,但根据底层窗口系统的不同,可能会更加高效。drawTiledPixmap() 在高DPI显示器(devicePixelRatio > 1)上会产生与普通DPI显示器相同的视觉平铺效果。在
pixmap上设置 devicePixelRatio 以控制平铺大小。例如,将其设置为2会使平铺宽度和高度减半(在1x和2x显示器上),并在2x显示器上生成高分辨率输出。position偏移量始终在绘制器坐标系中,与显示设备的像素比无关。另请参阅
- drawTiledPixmap(x, y, w, h, pixmap[, sx=0[, sy=0]])
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
pixmap –
QPixmapsx – int
sy – 整数
这是一个重载函数。
在指定的矩形中绘制一个平铺的
pixmap。(
x,y) 指定了要绘制到的绘图设备中的左上角点;使用给定的width和height。(sx,sy) 指定了要绘制的pixmap中的左上角点;默认为 (0, 0)。- end()¶
- Return type:
布尔
结束绘制。绘制过程中使用的任何资源都会被释放。通常不需要调用此方法,因为析构函数会自动调用它。
如果画家不再活跃,则返回
true;否则返回false。另请参阅
- endNativePainting()¶
在手动发出原生绘画命令后恢复画家的状态。让画家在调用任何其他画家命令之前恢复它所依赖的任何原生状态。
这是一个重载函数。
擦除给定
rectangle内的区域。- eraseRect(rectangle)
- Parameters:
矩形 –
QRectF
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
清除给定
rectangle内的区域。相当于调用fillRect(rectangle, background())
另请参阅
- eraseRect(x, y, w, h)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
这是一个重载函数。
擦除从(
x,y)开始,具有给定width和height的矩形区域。- fillPath(path, brush)¶
- Parameters:
路径 –
QPainterPathbrush –
QBrush
使用给定的
brush填充给定的path。不绘制轮廓。或者,您可以指定一个
QColor而不是QBrush;QBrush构造函数(接受QColor参数)将自动创建一个实心图案画笔。另请参阅
这是一个重载函数。
用指定的
brush填充给定的rectangle。这是一个重载函数。
用指定的
color填充给定的rectangle。这是一个重载函数。
用指定的渐变
预设填充给定的矩形。- fillRect(r, style)
- Parameters:
r –
QRectstyle –
BrushStyle
这是一个重载函数。
用指定的
style画笔填充给定的rectangle。- fillRect(r, c)
- Parameters:
r –
QRectc –
GlobalColor
这是一个重载函数。
用指定的
color填充给定的rectangle。用指定的
brush填充给定的rectangle。或者,您可以指定一个
QColor而不是QBrush;QBrush构造函数(接受QColor参数)将自动创建一个实心图案画笔。另请参阅
这是一个重载函数。
用指定的
color填充给定的rectangle。这是一个重载函数。
用指定的渐变
预设填充给定的矩形。- fillRect(r, style)
- Parameters:
r –
QRectFstyle –
BrushStyle
这是一个重载函数。
用指定的
style画笔填充给定的rectangle。- fillRect(r, c)
- Parameters:
r –
QRectFc –
GlobalColor
这是一个重载函数。
用指定的
color填充给定的rectangle。- fillRect(x, y, w, h, preset)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
preset –
Preset
这是一个重载函数。
使用给定的渐变
preset填充从(x,y)开始的矩形,矩形的宽度为width,高度为height。- fillRect(x, y, w, h, style)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
style –
BrushStyle
这是一个重载函数。
使用指定的
style画笔填充从(x,y)开始的矩形,给定的width和height。- fillRect(x, y, w, h, c)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
c –
GlobalColor
这是一个重载函数。
使用给定的
color填充从(x,y)开始的矩形,矩形的宽度为width,高度为height。- fillRect(x, y, w, h, brush)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
brush –
QBrush
这是一个重载函数。
使用给定的
brush填充从(x,y)开始的矩形,矩形的宽度为width,高度为height。- fillRect(x, y, w, h, color)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
颜色 –
QColor
这是一个重载函数。
使用给定的
color填充从(x,y)开始的矩形,矩形的宽度为width,高度为height。返回当前设置的用于绘制文本的字体。
另请参阅
如果画师处于活动状态,则返回画师的字体信息。否则,返回值未定义。
另请参阅
font()isActive()设置- fontMetrics()¶
- Return type:
如果画师处于活动状态,则返回画师的字体度量。否则,返回值未定义。
另请参阅
font()isActive()设置- hasClipping()¶
- Return type:
布尔
如果已设置裁剪,则返回
true;否则返回false。另请参阅
- isActive()¶
- Return type:
布尔
如果
begin()已被调用且end()尚未被调用,则返回true;否则返回false。另请参阅
- layoutDirection()¶
- Return type:
返回绘制文本时画家使用的布局方向。
- opacity()¶
- Return type:
浮点数
返回画家的不透明度。默认值为1。
另请参阅
- paintEngine()¶
- Return type:
如果画家处于活动状态,则返回画家当前操作的绘制引擎;否则返回0。
另请参阅
返回画家的当前笔。
另请参阅
setPen()设置- renderHints()¶
- Return type:
RenderHint的组合
返回一个标志,该标志指定为此画家设置的渲染提示。
另请参阅
- resetTransform()¶
重置使用
translate()、scale()、shear()、rotate()、setWorldTransform()、setViewport()和setWindow()进行的任何变换。另请参阅
Coordinate Transformations- restore()¶
恢复当前绘图状态(从堆栈中弹出一个保存的状态)。
另请参阅
- rotate(a)¶
- Parameters:
a – 浮点数
顺时针旋转坐标系。给定的
angle参数以度为单位。另请参阅
setWorldTransform()坐标 变换- save()¶
保存当前绘图状态(将状态推入堆栈)。save() 必须跟随相应的
restore();end()函数会展开堆栈。另请参阅
- scale(sx, sy)¶
- Parameters:
sx – 浮点数
sy – 浮点数
将坐标系按比例缩放为 (
sx,sy)。另请参阅
setWorldTransform()坐标 变换将画家的背景画笔设置为给定的
brush。背景画笔是在绘制不透明文本、点画线和位图时填充的画笔。在透明背景模式下(这是默认设置),背景画笔没有效果。
另请参阅
将画家的背景模式设置为给定的
modeQt::TransparentMode(默认)绘制虚线线条和文本而不设置背景像素。Qt::OpaqueMode用当前背景颜色填充这些空间。
请注意,为了透明地绘制位图或像素图,您必须使用
setMask()。另请参阅
- setBrush(style)¶
- Parameters:
样式 –
BrushStyle
这是一个重载函数。
将画家的画笔设置为黑色和指定的
style。- setBrush(brush)
- Parameters:
画笔 –
QBrush
将画家的画笔设置为给定的
brush。画家的画笔定义了形状如何被填充。
另请参阅
brush()设置这是一个重载函数。
将画笔的原点设置为给定的
position。- setBrushOrigin(position)
- Parameters:
位置 –
QPointF
将画笔原点设置为
position。画笔原点指定了画家画笔的 (0, 0) 坐标。
请注意,虽然在Qt 3中,
brushOrigin()是让部件采用父部件背景所必需的,但自Qt 4以来,情况已不再如此,因为Qt 4的绘图器不会绘制背景,除非你通过将部件的autoFillBackground属性设置为true来明确告诉它这样做。另请参阅
- setBrushOrigin(x, y)
- Parameters:
x – 整数
y – 整数
这是一个重载函数。
将画笔的原点设置为点 (
x,y)。- setClipPath(path[, op=Qt.ReplaceClip])¶
- Parameters:
路径 –
QPainterPathop –
ClipOperation
启用裁剪,并将画家的裁剪路径设置为给定的
path,使用裁剪operation。请注意,剪裁路径是在逻辑(绘画)坐标中指定的。
另请参阅
- setClipRect(rectangle[, op=Qt.ReplaceClip])¶
- Parameters:
矩形 –
QRectop –
ClipOperation
这是一个重载函数。
启用裁剪,并使用给定的裁剪
操作将裁剪区域设置为给定的矩形。- setClipRect(rectangle[, op=Qt.ReplaceClip])
- Parameters:
矩形 –
QRectFop –
ClipOperation
启用裁剪,并使用给定的裁剪
操作将裁剪区域设置为给定的矩形。默认操作是替换当前的裁剪矩形。请注意,裁剪矩形是在逻辑(绘图)坐标系中指定的。
另请参阅
- setClipRect(x, y, w, h[, op=Qt.ReplaceClip])
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
op –
ClipOperation
启用裁剪,并将裁剪区域设置为从(
x,y)开始,具有给定width和height的矩形。- setClipRegion(region[, op=Qt.ReplaceClip])¶
- Parameters:
region –
QRegionop –
ClipOperation
将剪辑区域设置为给定的
region,使用指定的剪辑operation。默认的剪辑操作是替换当前的剪辑区域。请注意,裁剪区域是以逻辑坐标给出的。
另请参阅
- setClipping(enable)¶
- Parameters:
enable – 布尔值
如果
enable为 true,则启用裁剪;如果enable为 false,则禁用裁剪。另请参阅
- setCompositionMode(mode)¶
- Parameters:
mode –
CompositionMode
将组合模式设置为给定的
mode。将画家的字体设置为给定的
font。此字体由后续的
drawText()函数使用。文本颜色与画笔颜色相同。如果你设置的字体不可用,Qt会找到一个相近的匹配。
font()将返回你使用 setFont() 设置的字体,而fontInfo()返回实际使用的字体(可能是相同的)。另请参阅
font()drawText()设置- setLayoutDirection(direction)¶
- Parameters:
方向 –
LayoutDirection
设置画家在绘制文本时使用的布局方向为指定的
direction。默认是Qt::LayoutDirectionAuto,它将隐式地从绘制的文本中确定方向。
- setOpacity(opacity)¶
- Parameters:
opacity – 浮点数
设置画家的不透明度为
opacity。该值应在0.0到1.0的范围内,其中0.0表示完全透明,1.0表示完全不透明。在绘制器上设置的不透明度将分别应用于所有绘图操作。
另请参阅
这是一个重载函数。
将画家的笔设置为具有给定的
style,宽度为1,颜色为黑色。- setPen(color)
- Parameters:
颜色 –
QColor
这是一个重载函数。
将画家的笔设置为具有样式 Qt::SolidLine,宽度为 1 和指定的
color。- setPen(pen)
- Parameters:
笔 –
QPen
将画家的笔设置为给定的
pen。pen定义了如何绘制线条和轮廓,并且还定义了文本颜色。另请参阅
pen()设置- setRenderHint(hint[, on=true])¶
- Parameters:
提示 –
RenderHinton – 布尔值
如果
on为真,则在画师上设置给定的渲染hint;否则清除渲染提示。另请参阅
- setRenderHints(hints[, on=true])¶
- Parameters:
hints –
RenderHint的组合on – 布尔值
如果
on为真,则在画师上设置给定的渲染hints;否则清除渲染提示。另请参阅
setRenderHint()renderHints()渲染 质量- setTransform(transform[, combine=false])¶
- Parameters:
transform –
QTransformcombine – 布尔值
设置世界变换矩阵。如果
combine为真,则指定的transform将与当前矩阵结合;否则它将替换当前矩阵。- setViewTransformEnabled(enable)¶
- Parameters:
enable – 布尔值
如果
enable为true,则启用视图转换;如果enable为false,则禁用视图转换。将画家的视口矩形设置为给定的
rectangle,并启用视图变换。视口矩形是视图变换的一部分。视口指定了设备坐标系。它的姐妹,
window(),指定了逻辑坐标系。默认的视口矩形与设备的矩形相同。
- setViewport(x, y, w, h)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
这是一个重载函数。
将画家的视口矩形设置为从(
x,y)开始,具有给定的width和height的矩形。将画家的窗口设置为给定的
rectangle,并启用视图变换。窗口矩形是视图变换的一部分。窗口指定了逻辑坐标系。它的姐妹,
viewport(),指定了设备坐标系。默认窗口矩形与设备的矩形相同。
- setWindow(x, y, w, h)
- Parameters:
x – 整数
y – 整数
w – 整数
h – 整数
这是一个重载函数。
将画家的窗口设置为从(
x,y)开始并具有给定width和height的矩形。- setWorldMatrixEnabled(enabled)¶
- Parameters:
enabled – 布尔值
如果
enable为true,则启用转换;如果enable为false,则禁用转换。世界转换矩阵不会改变。另请参阅
- setWorldTransform(matrix[, combine=false])¶
- Parameters:
matrix –
QTransformcombine – 布尔值
设置世界变换矩阵。如果
combine为真,则指定的matrix将与当前矩阵结合;否则它将替换当前矩阵。- shear(sh, sv)¶
- Parameters:
sh – 浮点数
sv – 浮点数
通过(
sh,sv)剪切坐标系。另请参阅
setWorldTransform()坐标 变换- strokePath(path, pen)¶
- Parameters:
路径 –
QPainterPathpen –
QPen
使用由
pen指定的笔绘制路径path的轮廓(描边)另请参阅
fillPath()绘图- testRenderHint(hint)¶
- Parameters:
提示 –
RenderHint- Return type:
布尔
如果设置了
hint,则返回true;否则返回false。- transform()¶
- Return type:
worldTransform()的别名。返回世界变换矩阵。这是一个重载函数。
通过给定的
offset平移坐标系。- translate(offset)
- Parameters:
偏移量 –
QPointF
通过给定的
offset平移坐标系;即给定的offset被添加到点上。另请参阅
setWorldTransform()坐标 变换- translate(dx, dy)
- Parameters:
dx – 浮点数
dy – 浮点数
这是一个重载函数。
通过向量 (
dx,dy) 平移坐标系。- viewTransformEnabled()¶
- Return type:
布尔
如果视图转换已启用,则返回
true;否则返回false。返回视口矩形。
返回窗口矩形。
- worldMatrixEnabled()¶
- Return type:
布尔
如果启用了世界变换,则返回
true;否则返回 false。- worldTransform()¶
- Return type:
返回世界变换矩阵。
另请参阅
- class PixmapFragment¶
此类与
drawPixmapFragments()函数一起使用,用于指定如何绘制位图或位图的子矩形。更多_…在版本4.7中添加。
概要¶
静态函数¶
def
create()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
sourceLeft、sourceTop、width和height变量用作传入drawPixmapFragments()函数的 pixmap 中的源矩形。变量x、y、width和height用于计算绘制的目标矩形。x和y表示目标矩形的中心。目标矩形中的width和height由scaleX和scaleY值缩放。然后,生成的目标矩形围绕x、y中心点旋转rotation度。- PySide6.QtGui.QPainter.PixmapFragment.x¶
- PySide6.QtGui.QPainter.PixmapFragment.y¶
- PySide6.QtGui.QPainter.PixmapFragment.sourceLeft¶
- PySide6.QtGui.QPainter.PixmapFragment.sourceTop¶
- PySide6.QtGui.QPainter.PixmapFragment.width¶
- PySide6.QtGui.QPainter.PixmapFragment.height¶
- PySide6.QtGui.QPainter.PixmapFragment.scaleX¶
- PySide6.QtGui.QPainter.PixmapFragment.scaleY¶
- PySide6.QtGui.QPainter.PixmapFragment.rotation¶
- PySide6.QtGui.QPainter.PixmapFragment.opacity¶
- static create(pos, sourceRect[, scaleX=1[, scaleY=1[, rotation=0[, opacity=1]]]])¶
- Parameters:
- Return type:
这是一个便捷函数,返回一个使用
pos、sourceRect、scaleX、scaleY、rotation、opacity参数初始化的PixmapFragment。


