qpainter_zh
2022-04-07 14:29:54

Class::QPainter

暂无该属性


Detailed Description

QPainter 类在窗口小部件和其它绘制设备上执行基本绘制。 QPainter 提供了高度优化的功能来完成 GUI 程序所需要大多数绘图工作。它可以绘制出从简单线条到如饼图和弦等复杂图形的一切图形。它还可以绘制出对齐文本和像素图。通常,它在一个“自然”坐标系中绘制,但是它也可以进行视图坐标变换和世界坐标变换。 QPainter 可以对继承自 QPaintDevice 类的任何对象进行操作。

QPainter 常见用法是在窗口小部件绘制事件中:构造和自定义(例如设置笔或者画刷)painter 。然后进行绘制。记得在绘制后销毁 QPainter 对象。例如:

QPainter 核心功能是绘图,但是该类还提供了一些允许自定义 QPainter 的设置及其渲染质量函数,以及使用剪裁的函数。此外,还可以通过指定 painter 组合模式来控制如何将不同形状合并在一起。

函数 isActive() 指示 painter 是否处于活动状态。painter 是由 begin() 函数激活,构造函数接受 QPaintDevice 类型的参数函数和析构函数将其停用。

QPainterQPaintDeviceQPaintEngine 类一起构成了 Qt 绘图系统的基础。 QPainter 是用于执行绘图操作类 QPaintDevice 表示可以使用 QPainter 进行绘制的设备。 QPaintEngine 提供了 painter 在不同类型设备上的绘图接口。如果 painter 处于激活状态, device() 返回 painter 正在进行绘制的绘制设备,而 paintEngine() 返回 painter 当前正在操作的绘制引擎。更多有关详细信息,请参见 Paint System

有时,要求在不通用 QPaintDevice 上进行绘画时, QPainter 支持一个静态函数 setRedirected() 来执行此操作。

**Warning:**当绘制设备是一个窗口小部件时,只能在 paintEvent() 函数或 paintEvent() 调用函数中使用。

属性设置

可以根据自己喜好自定义多个设置属性来进行 QPainter 绘制:

请注意,以上这些设置中有一些设置反映了某些绘制设备中的设置,例如: QWidget::font()QPainter::begin() 函数(或等效的 QPainter 构造函数)将会从绘制设备复制这些属性。

可以随时通过调用 save() 函数来保存 QPainter 的状态,该函数将所有可用的设置保存在一个内部堆栈上。 restore() 函数将其恢复。

绘制

QPainter 提供了绘制大多数基本图形函数: drawPoint()drawPoints()drawLine()drawRect()drawRoundedRect()drawEllipse()drawArc()drawPie()drawChord()drawPolyline()drawPolygon()drawConvexPolygon() 和 drawCubicBezier() 。 drawRects()drawLines() 这两个函数使用当前画笔或者笔刷在给定 QRectQLine 数组中绘制给定数量的矩形或者线条。

QPainter 类还提供了用给定 QBrush 填充给定 QRectfillRect() 函数以及擦除给定矩形内区域的 eraseRect() 函数。

所有这些函数都有整数和浮点版本。

基本绘图示例

painting/basicdrawing示例说明了如何使用QPainter类以各种样式显示基本图元。

如果需要绘制复杂形状,尤其是需要重复绘制,请考虑创建 QPainterPath 并使用 drawPath() 进行绘制。

QPainterPath类为绘制操作提供了一个容器,允许构造和重复使用图形形状。

painting/painterpaths示例显示如何使用 painter paths 构建复杂形状并进行渲染。

QPainter 还提供了 fillPath() 函数和 strokePath() 函数,前者表示用给定 QBrush 填充给定 QPainterPath ,后者表示绘制给定路径轮廓(即描画路径)。

另请参见 painting/deform 示例展示了如何使用高级矢量技术来使用 QPainterPath 绘制文本, painting/gradients 显示了不同类型的梯度是在 Qt 中可用的以及 painting/pathstroke 显示了 Qt 内建的虚线样式并显示如何使用自定义模式来扩展可用模式的范围。

painting/deform

painting/gradients

painting/pathstroke

文本绘制是使用 drawText() 完成的。当需要细粒度定位时, boundingRect() 会告诉给定 drawText() 命令将会绘制的位置。

绘制像素图和图像

Qt 有绘制像素图/图像函数,即 drawPixmap()drawImage()drawTiledPixmap()drawPixmap()drawImage() 产生相同结果,只是 drawPixmap() 在屏幕上更快,而在 QPrinter 或者其它设备上 drawImage() 可能更快。

Qt 有一个可以绘制整个 QPicture 内容的 drawPicture() 函数,这个 drawPicture() 函数是唯一一个忽略所有绘制设置函数,因为 QPicture 有自己的设置。

绘制高分辨率版本像素图和图像

高分辨率版本像素图device pixel ratio值大于1(请参见 QImageReaderQPixmap::devicePixelRatio() )。如果它与底层 QPaintDevice 的值匹配,则直接将其绘制到设备上,而不应用额外的转换。

例如,在高 DPI 屏幕上绘制设备像素比为2的64X64像素大小的 QPixmap 时,设备像素比也为2。请注意,在user space中,像素图实际上为32X32像素。Qt 中基于像素图大小计算布局几何图形的代码路径将使用此大小。这样做的实际效果是,像素图显示为高 DPI 的像素图,而不是大的像素图。

渲染质量

要使用 QPainter 获得最佳渲染结果,应使用平台独立的 QImage 作为绘制设备;即使用 QImage 将确保结果具有在任何平台上相同的像素表示。

QPainter 类还通过其 RenderHint 枚举和对浮点精度的支持,提供了一种控制渲染质量的方法:用于绘制图元的所有函数都具有浮点版本。这些通常与 RenderHint 渲染结合使用。

同心圆示例

painting/concentriccircles示例显示了在绘制自定义小部件时,使用浮点精度和抗锯齿可以获得更高的渲染质量。

应用程序主窗口显示了几个小部件,这些小部件是使用精度和抗锯齿的各种组合绘制。

RenderHint 枚举指定任何给定引擎可能遵守或不遵守的 QPainter 标志。 RenderHint 表示引擎应尽可能的消除图元边缘的锯齿, RenderHint 表示引擎应尽可能消除文本锯齿, RenderHint 表示引擎应使用平滑的像素映射转换算法。

renderHints() 函数返回一个标志,用于指定为此 painter 设置渲染提示。使用 setRenderHint() 函数设置或清除当前设置 RenderHints

坐标变换

通常, QPainter 在设备自己的坐标系(通常是像素)上操作,但 QPainter 对坐标变换有很好的支持。

nop

rotate()

scale()

translate()

最常用的变换是缩放、旋转、平移和剪切。使用 scale() 函数按给定偏移量缩放坐标系,使用 rotate() 函数顺时针旋转坐标系,使用 translate() 函数平移坐标系(即向点添加给定偏移量)。也可以使用 shear() 函数围绕原点扭曲坐标系。有关剪切坐标系的可视化,请参见 painting/affine 示例。

另请参见 painting/transformations 示例,它显示了转换如何影响 QPainter 渲染图形图元方式。特别地是它显示了转换的顺序如何影响结果。

painting/affine示例显示了 Qt 在绘制操作上执行仿射变换的能力。该 demo 还允许用户试验转换操作,并立即看到结果。

所有转换操作都在转换 worldTransform() 上进行操作。矩阵将平面中的一个点变换为另一个点。更多有关变换矩阵详细信息,请参见 Coordinate SystemQTransform 文档。

setWorldTransform() 函数可以替换或添加到当前设置 worldTransform()resetTransform() 函数可重置使用 translate()scale()shear()rotate()setWorldTransform()setViewport()setWindow() 函数进行的任何转换。 deviceTransform() 返回从逻辑坐标转换为平台相关绘制设备的设备坐标矩阵。后一个函数是只有在平台相关句柄上使用平台绘制命令时才需要,并且平台本身不执行转换。

当使用 QPainter 绘图时,使用逻辑坐标指定点,然后将其转换为绘图设备物理坐标。逻辑坐标到物理坐标的映射是由 QPaintercombinedTransform() 处理,它是 viewport()window() 以及 worldTransform() 的组合。 viewport() 表示指定任意矩形的物理坐标, window() 以逻辑坐标描述相同的矩形,与转换矩阵相同。

另请参见 Coordinate System

剪切

QPainter 可以将任何绘图操作剪切到矩形、区域或矢量路径。使用函数 clipRegion()clipPath() 可以获得当前剪切数据。路径或区域是否首选(更快)取决于基础 paintEngine() 。例如, QImage 绘制引擎首选路径,而 X11 绘制引擎首选区域。处理设置剪辑是在绘图的逻辑坐标中完成。

QPainter 剪裁之后,绘图设备也可能进行剪裁。例如,大多数窗口会剪切子窗口使用的像素,而大多数打印机会剪切掉靠近纸张边缘区域。 clipRegion()hasClipping() 的返回值不会反映此附加剪切。

合成模式

QPainter 提供了 CompositionMode 枚举,该枚举定义了用于数字图像合成的 Porter-Duff 规则。它描述了一种模型,用于将一个源图像像素与另一个目标图像像素进行组合。

两种最常见的合成形式是 QPainter::CompositionModeQPainter::CompositionModeQPainter::CompositionMode 用于将不透明对象绘制到绘制设备上。在此模式下,源中每个像素都将替换目标中的相应像素。在 QPainter::CompositionMode 合成模式中,源对象是透明的,并且绘制在目标之上。

请注意,合成变换是按像素方式操作。因此,使用图元本身和它的边界矩形之间是有区别的:边界矩形包含 alpha == 0 的像素(即图元周围的像素)。这些像素将覆盖其它图像像素,有效地清除这些像素,而图元只覆盖其自身的区域。

合成模式示例

在 Qt 的 examples 目录中提供的painting/composition示例允许试验各种合成模式并立即看到结果。

局限性

如果 Qt 基于光栅的绘图引擎下使用坐标,请务必注意,虽然可以使用大于 +/-215的坐标,但是在使用超出该范围的坐标进行任何绘画时,不保证能够显示,绘图可能会被裁剪。这是由于在实现中使用了short int

当处理曲线形状时,由 Qt 的 stroker 生成的轮廓只是一个近似值。在大多数情况下,不可能使用一个 bezier 曲线段来表示另一个 bezier 曲线段的轮廓,因此 Qt 通过使用一些较小的曲线来近似曲线轮廓。出于性能原因,Qt 对这些轮廓使用的曲线数量是有限制的,因此,当使用较大的笔宽或刻度时,轮廓的误差会增加。要生成误差较小的轮廓,可以使用 QPainterPathStroker 类,该类具有 setCurveThreshold 成员函数,可以让用户指定误差容限。另一种解决方法是先将路径转换为多边形,然后再进行绘制多边形。

性能

QPainter 是一个丰富的框架,允许开发人员进行各种图形操作,如渐变、合成模式和矢量图形。 QPainter 可以在各种不同的硬件和软件堆栈中执行此操作。当然,硬件和软件的基础组合会对性能产生一定的影响,并且由于排列的数量多,确保每个操作在与合成模式、画笔、剪切、变换等所有各种组合相结合时都很快,几乎是一个不可能完成的任务。作为一种折衷方案,选择了 QPainter API 和后端的一个子集,在这里,对于给定硬件和软件组合,可以合理的获得尽可能好的性能。

作为高性能引擎,关注的后端包括:

  • 光栅-此后端在纯软件中实现所有渲染,并始终用于渲染到 QImages 中。为了获得最佳性能,请仅使用一下格式类型: QImage::Format_ARGB32_PremultipliedQImage::Format_RGB32QImage::Format_RGB16 。任何其它格式,包括 QImage::Format_ARGB32 的性能都要差得多。默认情况下,此引擎用于 QWidgetQPixmap
  • OpenGL 2.0 (ES)- 此后端是硬件加速图形的主要后端。它可以在支持 OpenGL 2.0 或 OpenGL/ES 2.0 规范的台式机和嵌入式设备上运行。这包括过去几年生产的大多数图形芯片。可以通过在 QOpenGLWidget 上使用 QPainter 来启用引擎。

这些操作包括:

  • 简单的转换,即平移和缩放,再加上0,90,180,270度旋转
  • drawPixmap()与简单的转换和具有非平滑转换模式的不透明度结合使用(QPainter::SmoothPixmapTransform未作为渲染提示启用)。
  • 使用纯色、双色线性渐变和简单变换进行矩形填充
  • 具有简单变换和相交剪裁的矩形剪裁。
  • 合成模式QPainter::CompositionMode_SourceQPainter::CompositionMode_SourceOver
  • 使用纯色和双色线性渐变填充圆角矩形。
  • 3x3修补的像素图。

此列表指示在性能至关重要的应用程序中应安全使用哪些功能。对于某些设置,其它操作可能也很快,但在广泛使用它们之前,建议在软件最终运行的系统上对它们进行基准测试和验证。在某些情况下,也可以使用昂贵的操作,例如当结果缓存在 QPixmap 中时。

See also QPaintDevice QPaintEngine Qt SVG Basic Drawing Example <qdrawutil.h>

QPainter::QPainter

[public constructor  ]

QPainter() 构造一个 painter 。

See also begin() end()

QPainter::QPainter

[public constructor  ]

QPainter(QPaintDevice *device) 构造一个在 device 上立即开始绘制的 painter 。

这个构造函数对于生命期短的 painters 来说很方便,例如,在 QWidget::paintEvent() 中,并且只能使用一次。构造函数为调用 begin() ,而 QPainter 析构函数自动调用 end()

下面是使用 begin()end() 的示例:

使用此构造函数的相同示例:

由于构造函数无法在 painter 初始化失败时提供反馈,因此应该使用 begin()end() 在外部设备(例如打印机)上进行绘画。

See also begin() end()

QPainter::QPainter

[private constructor  ]

QPainter(const QPainter &)

QPainter::background

[public plain  ]

const QBrush & background() const 返回当前背景画刷。

See also setBackground() QPainter#Settings

QPainter::backgroundMode

[public plain  ]

Qt::BGMode backgroundMode() const 返回当前背景模式。

See also setBackgroundMode() QPainter#Settings

QPainter::begin

[public plain  ]

bool begin(QPaintDevice *device) 开始绘制_device_,如果成功返回True,否则返回false

请注意,所有 painter 设置( setPen()setBrush() 等)在调用时都将被重置为默认值。

可能发生严重错误的问题,例如:

请注意,大多数情况下,可以使用其中一个构造函数代替,并且会在析构时自动完成。

**Warning:**一个绘制设备一次只能由一个 painter 进行绘制。

**Warning:**不支持使用 QImage::Format_Indexed8 格式在 QImage 上进行绘制。

See also end() QPainter()

QPainter::beginNativePainting

[public plain  ]

void beginNativePainting() 刷新绘制管道,并为用户直接向基础图形上下文发出命令做好准备。必须随后调用 endNativePainting()

请注意,只有底层绘制引擎的状态更改才会被重置为其各自的默认状态。重置的状态可能会因版本而异。当前在 OpenGL 2 引擎中重置了以下状态:

  • 混合功能已禁用
  • 深度、模版和剪刀测试被禁用
  • 活动纹理单位重置为0
  • 深度蒙版、深度功能和清除深度将重置为其默认值
  • 模板遮罩、模板操作和模板功能将重置为其默认值
  • 当前颜色重置为纯白色

例如,如果用户在 beginNativePaint() / endNativePainting() 块内更改了 OpenGL 多边形模式,则不会将其重置为默认状态。 这是显示 painter 命令和原始 OpenGL 命令的混合示例:

See also endNativePainting()

QPainter::boundingRect

[public plain  ]

QRectF boundingRect(const QRectF &rectangle, int flags, const QString &text) 返回使用当前设置 font() 指定_flags_在给定_rectangle_内部绘制时显示_text_的边界矩形;即该函数告诉在给定相同参数的情况下 drawText() 函数将在何处绘制。

如果使用指定_flags_,_text_不适合给定_rectangle_,该函数返回所需要的矩形。

_flags_参数是以下标志的按位或:

如果设置了多个水平对齐标志或垂直对齐标志,则对齐方式的结果是不确定的。

See also drawText() Qt::Alignment Qt::TextFlag

QPainter::boundingRect

[public plain  ]

QRect boundingRect(const QRect &rectangle, int flags, const QString &text) 这是一个重载函数。

返回使用当前设置 font() 指定_flags_在给定_rectangle_内部绘制时显示_text_的边界矩形。

QPainter::boundingRect

[public plain  ]

QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text) 这是一个重载函数。

返回给定_text_的边框,该边框在宽度为_w_,高度为_h_,从点(_x_,_y_)开始地矩形内绘制时显示。

QPainter::boundingRect

[public plain  ]

QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option) 这是一个重载函数。

这个重载函数不是将标志指定为 Qt::AlignmentFlagQt::TextFlag 的按位或,而是接受一个选项参数。 QTextOption 类提供常规富文本属性描述。

See also QTextOption

QPainter::brush

[public plain  ]

const QBrush & brush() const 返回当前画笔。

See also QPainter::setBrush() QPainter#Settings

QPainter::brushOrigin

[public plain  ]

QPoint brushOrigin() const 返回当前设置笔刷原点。

See also setBrushOrigin() QPainter#Settings

QPainter::clipBoundingRect

[public plain  ]

QRectF clipBoundingRect() const 如果存在剪辑,则返回当前剪辑边框。否则返回空矩形。注意,剪辑区域以逻辑坐标给出。

不能保证边界矩形是紧密的。

See also setClipRect() setClipPath() setClipRegion()

QPainter::clipPath

[public plain  ]

QPainterPath clipPath() const 以逻辑坐标返回当前剪辑路径。

**Warning:**由于 QPainter 是由底层的 QPaintEngine 处理,会根据需要重新创建路径并将其转换为当前逻辑坐标系,是不会显示存储组合剪辑,所以需要额外开销。

See also setClipPath() clipRegion() setClipping()

QPainter::clipRegion

[public plain  ]

QRegion clipRegion() const 返回当前设置剪辑区域。注意,剪辑区域以逻辑坐标给出。

**Warning:**由于 QPainter 是由底层的 QPaintEngine 处理,会根据需要重新创建路径并将其转换为当前逻辑坐标系,是不会显示存储组合剪辑,所以需要额外开销。

See also setClipRegion() clipPath() setClipping()

QPainter::combinedMatrix

[public plain  ]

QMatrix combinedMatrix() const 返回结合了当前窗口/视口和世界坐标转换的变换矩阵。

建议使用 combinedTransform() 代替此函数,以保留透视转换的属性。

See also setWorldTransform() setWindow() setViewport()

QPainter::combinedTransform

[public plain  ]

QTransform combinedTransform() const 返回结合了当前窗口/视口和世界坐标转换的变换矩阵。

See also setWorldTransform() setWindow() setViewport()

QPainter::compositionMode

[public plain  ]

QPainter::CompositionMode compositionMode() const 返回当前合成模式。

See also CompositionMode setCompositionMode()

QPainter::d_func

[private plain  ]

QPainterPrivate * d_func()

QPainter::d_func

[private plain  ]

const QPainterPrivate * d_func() const

QPainter::device

[public plain  ]

QPaintDevice * device() const 返回 painter 当前正在绘制的绘制设备,如果 painter 未处于活动状态,则返回nullptr

See also isActive()

QPainter::deviceMatrix

[public plain  ]

const QMatrix & deviceMatrix() const 返回从逻辑坐标转换为平台相关绘图设备的设备坐标矩阵。

**Note:**建议使用 deviceTransform() 代替此函数,以保留透视转换的属性。

only在平台相关句柄( Qt::HANDLE )上使用平台绘制命令时才需要此函数,并且平台本身不执行转换。

可以查询 QPaintEngine::PaintEngineFeature 枚举以确定平台是否执行转换。

See also worldMatrix() QPaintEngine::hasFeature()

QPainter::deviceTransform

[public plain  ]

const QTransform & deviceTransform() const 返回从逻辑坐标转换为平台相关绘图设备的设备坐标矩阵。

only在平台相关句柄( Qt::HANDLE )上使用平台绘制命令时才需要此函数,并且平台本身不执行转换。

可以查询 QPaintEngine::PaintEngineFeature 枚举以确定平台是否执行转换。

See also worldTransform() QPaintEngine::hasFeature()

QPainter::drawArc

[public plain  ]

void drawArc(const QRectF &rectangle, int startAngle, int spanAngle) 绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的弧。

_startAngle_和_spanAngle_必须以1/16度为单位指定,即一个整圆等于5760(16*360)。角度正值表示逆时针方向,而负值表示顺时针方向。 零度是在3点钟位置。

See also drawPie() drawChord() Coordinate System

QPainter::drawArc

[public plain  ]

void drawArc(const QRect &rectangle, int startAngle, int spanAngle) 这是一个重载函数。

绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的弧。

QPainter::drawArc

[public plain  ]

void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) 这是一个重载函数。

使用指定_width_和_height_以及给定_startAngle_和_spanAngle_绘制由从(_x_,_y_)开始地矩形定义的弧。

QPainter::drawChord

[public plain  ]

void drawChord(const QRectF &rectangle, int startAngle, int spanAngle) 绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的和弦。 和弦由当前 brush() 填充。

startAngle 和 spanAngle 必须以1/16度为单位指定,即一个整圆等于5760(16*360)。角度正值表示逆时针方向,而负值表示顺时针方向。 零度是在3点钟位置。

See also drawArc() drawPie() Coordinate System

QPainter::drawChord

[public plain  ]

void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle) 这是一个重载函数。

使用指定_width_和_height_以及给定_startAngle_和_spanAngle_绘制由从(_x_,_y_)开始地矩形定义的弦。

QPainter::drawChord

[public plain  ]

void drawChord(const QRect &rectangle, int startAngle, int spanAngle) 这是一个重载函数。

绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的和弦。

QPainter::drawConvexPolygon

[public plain  ]

void drawConvexPolygon(const QPointF *points, int pointCount) 使用当前笔在阵列_points_中绘制由第一个_pointCount_点定义的凸多边形。

第一个点隐式连接到最后一个点,并且使用当前 brush() 填充多边形。如果提供的多边形不是凸的,即它至少包含一个大于180度的角,则结果是不确定的。

在某些平台(例如 X11 )上,该函数可能比 drawPolygon() 函数更快。

See also drawPolygon() drawPolyline() Coordinate System

QPainter::drawConvexPolygon

[public plain  ]

void drawConvexPolygon(const QPolygonF &polygon) 这是一个重载函数。

使用当前笔和画笔绘制由_polygon_定义的凸多边形。

QPainter::drawConvexPolygon

[public plain  ]

void drawConvexPolygon(const QPoint *points, int pointCount) 这是一个重载函数。

使用当前笔在阵列_points_中绘制由第一个_pointCount_点定义的凸多边形。

QPainter::drawConvexPolygon

[public plain  ]

void drawConvexPolygon(const QPolygon &polygon) 这是一个重载函数。

使用当前笔和画笔绘制由_polygon_定义的凸多边形。

QPainter::drawEllipse

[public plain  ]

void drawEllipse(const QRectF &rectangle) 绘制由给定_rectangle_定义的椭圆。

一个实心椭圆大小为_rectangle_. QRect::size() 。一个描边椭圆大小为_rectangle_. QRect::size() 加上画笔的宽度。

See also drawPie() Coordinate System

QPainter::drawEllipse

[public plain  ]

void drawEllipse(const QRect &rectangle) 这是一个重载函数。

绘制由给定_rectangle_定义的椭圆。

QPainter::drawEllipse

[public plain  ]

void drawEllipse(int x, int y, int width, int height) 这是一个重载函数。

以给定_width_和_height_绘制由从(_x_,_y_)开始矩形定义椭圆。

QPainter::drawEllipse

[public plain  ]

void drawEllipse(const QPointF &center, qreal rx, qreal ry) 这是一个重载函数。

用半径_rx_和_ry_绘制位于_center_的椭圆。

QPainter::drawEllipse

[public plain  ]

void drawEllipse(const QPoint &center, int rx, int ry) 这是一个重载函数。

用半径_rx_和_ry_绘制位于_center_的椭圆。

QPainter::drawGlyphRun

[public plain  ]

void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs) 在_position_绘制由_glyphs_所表示的字形。_position_给出了字形串的基线边缘。这些字形将从在_glyphs_上选择的字体以及_glyphs_中位置所给定偏移量处检索。

See also QGlyphRun::setRawFont() QGlyphRun::setPositions() QGlyphRun::setGlyphIndexes()

QPainter::drawImage

[public plain  ]

void drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags) 将给定_image_的矩形部分_source_绘制到绘制设备中的_target_矩形中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

**Note:**有关如何受 QImage::devicePixelRatio() 影响的信息,请参见 Drawing High Resolution Versions of Pixmaps and Images

如果需要修改图像以适应较低分辨率(例如:从32位转换为8位),请使用_flags_指定希望如何执行此操作。

See also drawPixmap() QImage::devicePixelRatio()

QPainter::drawImage

[public plain  ]

void drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags) 这是一个重载函数。

将给定_image_的矩形部分_source_绘制到绘制设备中的_target_矩形中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

QPainter::drawImage

[public plain  ]

void drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags) 这是一个重载函数。

绘制给定_image_的矩形部分_source_,其原点位于给定_point_。

QPainter::drawImage

[public plain  ]

void drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags) 这是一个重载函数。

绘制给定_image_的矩形部分_source_,其原点位于给定_point_。

QPainter::drawImage

[public plain  ]

void drawImage(const QRectF &rectangle, const QImage &image) 这是一个重载函数。

将给定_image_绘制到给定_rectangle_中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

QPainter::drawImage

[public plain  ]

void drawImage(const QRect &rectangle, const QImage &image) 这是一个重载函数。

将给定_image_绘制到给定_rectangle_中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

QPainter::drawImage

[public plain  ]

void drawImage(const QPointF &point, const QImage &image) 这是一个重载函数。

在给定_point_绘制给定_image_。

QPainter::drawImage

[public plain  ]

void drawImage(const QPoint &point, const QImage &image) 这是一个重载函数。

在给定_point_绘制给定_image_。

QPainter::drawImage

[public plain  ]

void drawImage(int x, int y, const QImage &image, int sx, int sy, int sw, int sh, Qt::ImageConversionFlags flags) 这是一个重载函数。

通过将_image_的一部分复制到绘制设备中,在(_x_,_y_)处绘制图像。

(_x_,_y_)指定要在其上绘制的绘制设备中的左上点。(_sx_,_sy_)指定要绘制的_image_中的左上点。默认值为(0,0)。

(_sw_,_sh_)指定要绘制的图像大小。默认值(0,0)(和负数)表示一直到图像右下角。

QPainter::drawLine

[public plain  ]

void drawLine(const QLineF &line) 绘制由_line_定义的线条。

See also drawLines() drawPolyline() Coordinate System

QPainter::drawLine

[public plain  ]

void drawLine(const QLine &line) 这是一个重载函数。

绘制由_line_定义的线条。

QPainter::drawLine

[public plain  ]

void drawLine(int x1, int y1, int x2, int y2) 这是一个重载函数。

绘制一条从(_x1_,_y1_)到(_x2_,_y2_)的直线。

QPainter::drawLine

[public plain  ]

void drawLine(const QPoint &p1, const QPoint &p2) 这是一个重载函数。

绘制一条从_p1_到_p2_的直线。

QPainter::drawLine

[public plain  ]

void drawLine(const QPointF &p1, const QPointF &p2) 这是一个重载函数。

绘制一条从_p1_到_p2_的直线。

QPainter::drawLines

[public plain  ]

void drawLines(const QLineF *lines, int lineCount) 使用当前笔在数组_lines_中绘制第一个_lineCount_行。

See also drawLine() drawPolyline()

QPainter::drawLines

[public plain  ]

void drawLines(const QVector &lines) 这是一个重载函数。

使用当前笔和画笔绘制由列表_lines_定义的线集合。

QPainter::drawLines

[public plain  ]

void drawLines(const QPointF *pointPairs, int lineCount) 这是一个重载函数。

使用当前笔在数组_pointPairs_中绘制从_lineCount_开始地行。这些线被指定为成对的点,因此_pointPairs_中条数目必须至少为_lineCount_* 2。

QPainter::drawLines

[public plain  ]

void drawLines(const QVector &pointPairs) 这是一个重载函数。

使用当前笔在矢量_pointPairs_中为每对点绘制一条线。如果数组中点数为奇数,则忽略最后一个点。

QPainter::drawLines

[public plain  ]

void drawLines(const QLine *lines, int lineCount) 这是一个重载函数。

使用当前笔在数组_lines_中绘制第一个_lineCount_行。

QPainter::drawLines

[public plain  ]

void drawLines(const QVector &lines) 这是一个重载函数。

使用当前笔和画笔绘制由列表_lines_定义的线集合。

QPainter::drawLines

[public plain  ]

void drawLines(const QPoint *pointPairs, int lineCount) 这是一个重载函数。

使用当前笔绘制数组_pointPairs_中的第一条_lineCount_线。

QPainter::drawLines

[public plain  ]

void drawLines(const QVector &pointPairs) 这是一个重载函数。

使用当前笔在矢量_pointPairs_中为每对点绘制一条线。

QPainter::drawPath

[public plain  ]

void drawPath(const QPainterPath &path) 使用当前笔绘制轮廓并使用当前笔刷填充绘制给定_path_。

See also painting/painterpaths painting/deform

QPainter::drawPicture

[public plain  ]

void drawPicture(const QPointF &point, const QPicture &picture) 在给定_point_位置重新放入给定_picture_。

QPicture 类是记录和重放 QPainter 命令的一种绘画设备。图片以独立于平台的格式将 painter 命令序列化到 IO 设备。在窗口小部件或像素图上绘制的所有内容也可以存储在图片中。

当以_point_ = QPoint (0,0)调用时,此函数功能与 QPicture::play() 完全相同。

See also QPicture::play()

QPainter::drawPicture

[public plain  ]

void drawPicture(int x, int y, const QPicture &picture) 这是一个重载函数。

在点(_x_,_y_)处绘制给定_picture_。

QPainter::drawPicture

[public plain  ]

void drawPicture(const QPoint &point, const QPicture &picture) 这是一个重载函数。

在给定_point_位置重新放入给定_picture_。

QPainter::drawPie

[public plain  ]

void drawPie(const QRectF &rectangle, int startAngle, int spanAngle) 绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的饼图。

使用当前 brush() 填充饼图。

startAngle 和 spanAngle 必须以1/16度为单位指定,即一个整圆等于5760(16*360)。角度正值表示逆时针方向,而负值表示顺时针方向。 零度是在3点钟位置。

See also drawEllipse() drawChord() Coordinate System

QPainter::drawPie

[public plain  ]

void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle) 这是一个重载函数。

使用指定_width_和_height_以及给定_startAngle_和_spanAngle_绘制由从(_x_,_y_)开始地矩形定义的饼图。

QPainter::drawPie

[public plain  ]

void drawPie(const QRect &rectangle, int startAngle, int spanAngle) 这是一个重载函数。

绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的饼图。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source) 将给定_pixmap_的矩形部分_source_绘制到绘制设备中的给定_target_中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

**Note:**有关如何受 QPixmap::devicePixelRatio() 影响的信息,请参见 Drawing High Resolution Versions of Pixmaps and Images

如果_pixmap_是一个 QBitmap ,则使用笔颜色“设置”的位来绘制它。如果 backgroundModeQt::OpaqueMode ,则使用背景画笔的颜色绘制“未设置”位。如果 backgroundModeQt::TransparentMode ,则“未设置”位是透明的。不支持使用渐变或纹理颜色绘制位图。

See also drawImage() QPixmap::devicePixelRatio()

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source) 这是一个重载函数。

将给定_pixmap_的矩形部分_source_绘制到绘制设备中的给定_target_中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh) 这是一个重载函数。

在给定原始矩形内绘制一个矩形,原始矩形原点为(sx, sy), 宽度 _sw_,并且高度为_sh_。新的矩形使用给定 pixmap_,原点为(_x, y) ,宽度为 w ,高度为 _h_。如果 SW 或 Sh 等于零,则使用 pixmap 给定宽度/高度,并通过偏移量 SX/Sy 进行调整。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh) 这是一个重载函数。

复制_pixmap_的一部分到绘制设备,并在(_x_,_y_)处绘图。

(_x_,_y_)指定在绘制设备中的左上点坐标。 (_sx_,_sy_)指定_pixmap_中将被绘制左上点坐标。默认值为(0, 0)。

(_sw_,_sh_)指定要绘制像素图大小。默认值(0,0)(和负数)表示一直到像素图右下角。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source) 这是一个重载函数。

在_point_处绘制矩形_source_, source 是由_pixmap_指定的。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source) 这是一个重载函数。

在_point_处绘制矩形_source_, source 是由_pixmap_指定的。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QPointF &point, const QPixmap &pixmap) 这是一个重载函数。

在_point_处绘制_pixmap_。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QPoint &point, const QPixmap &pixmap) 这是一个重载函数。

在_point_处绘制_pixmap_。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(int x, int y, const QPixmap &pixmap) 这是一个重载函数。

在位置(_x_,_y_)处绘制给定_pixmap_。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(const QRect &rectangle, const QPixmap &pixmap) 这是一个重载函数。

将_pixmap_绘制到_rectangle_中。

**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。

QPainter::drawPixmap

[public plain  ]

void drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap) 这是一个重载函数。

在(x_,_y_)处将 pixmap 绘制到矩形中。宽度为_width ,高度为_height_ 。

QPainter::drawPixmapFragments

[public plain  ]

void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints) 此函数用于以不同的比例、旋转和不透明度在多个位置绘制_pixmap_或_pixmap_的子矩形。_fragments_是_fragmentCount_元素的数组,指定用于绘制每个像素图片段的参数。_hints_参数可用于传递绘图提示。

此函数可能比多次调用 drawPixmap() 更快,因为后端可以优化状态更改。

See also QPainter::PixmapFragment QPainter::PixmapFragmentHint

QPainter::drawPoint

[public plain  ]

void drawPoint(const QPointF &position) 使用当前笔的颜色在给定_position_绘制单个点。

See also Coordinate System

QPainter::drawPoint

[public plain  ]

void drawPoint(const QPoint &position) 这是一个重载函数。

使用当前笔的颜色在给定_position_绘制单个点。

QPainter::drawPoint

[public plain  ]

void drawPoint(int x, int y) 这是一个重载函数。

在位置(_x_,_y_)处绘制单个点。

QPainter::drawPoints

[public plain  ]

void drawPoints(const QPointF *points, int pointCount) 使用当前笔的颜色绘制数组_points_中的第一个_pointCount_点。

See also Coordinate System

QPainter::drawPoints

[public plain  ]

void drawPoints(const QPolygonF &points) 这是一个重载函数。

绘制矢量_points_中的点。

QPainter::drawPoints

[public plain  ]

void drawPoints(const QPoint *points, int pointCount) 这是一个重载函数。

使用当前笔的颜色绘制数组_points_中的第一个_pointCount_点。

QPainter::drawPoints

[public plain  ]

void drawPoints(const QPolygon &points) 这是一个重载函数。

绘制矢量_points_中的点。

QPainter::drawPolygon

[public plain  ]

void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule) 使用当前笔和刷子绘制由数组_points_中的第一个_pointCount_点定义的多边形。

第一个点隐式地连接到最后一个点,并且多边形将被当前 brush() 填充。

如果_fillRule_为 Qt::WindingFill ,则使用缠绕填充算法填充多边形。如果_fillRule_为 Qt::OddEvenFill ,则使用奇偶填充算法填充多边形。有关这些填充规则更详细说明,请参见 Qt::FillRule

See also drawConvexPolygon() drawPolyline() Coordinate System

QPainter::drawPolygon

[public plain  ]

void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule) 这是一个重载函数。

根据给定_points_和填充_fillRule_绘制多边形。

QPainter::drawPolygon

[public plain  ]

void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule) 这是一个重载函数。

绘制数组_points_中前_pointCount_个点定义的多边形。

QPainter::drawPolygon

[public plain  ]

void drawPolygon(const QPolygon &points, Qt::FillRule fillRule) 这是一个重载函数。

根据给定_points_和填充_fillRule_绘制多边形。

QPainter::drawPolyline

[public plain  ]

void drawPolyline(const QPointF *points, int pointCount) 使用当前画笔绘制_points_中前_pointCount_个点定义的折线。

请注意,与 drawPolygon() 函数不同,最后一个点不连接到第一个点,也不填充折线。

See also drawLines() drawPolygon() Coordinate System

QPainter::drawPolyline

[public plain  ]

void drawPolyline(const QPolygonF &points) 这是一个重载函数。

使用当前画笔绘制由给定_points_定义的折线。

QPainter::drawPolyline

[public plain  ]

void drawPolyline(const QPoint *points, int pointCount) 这是一个重载函数。

使用当前画笔绘制_points_中前_pointCount_个点定义的折线。

QPainter::drawPolyline

[public plain  ]

void drawPolyline(const QPolygon &points) 这是一个重载函数。

使用当前画笔绘制由给定_points_定义的折线。

QPainter::drawRect

[public plain  ]

void drawRect(const QRectF &rectangle) 使用当前画笔和画刷绘制当前_rectangle_。

填充矩形大小为_rectangle_.size()。描边矩形大小为_rectangle_.size()加上笔的宽度。

See also drawRects() drawPolygon() Coordinate System

QPainter::drawRect

[public plain  ]

void drawRect(int x, int y, int width, int height) 这是一个重载函数。

在左上角(_x_,_y_) 处绘制一个矩形,使用指定宽度_width_和高度_height_。

QPainter::drawRect

[public plain  ]

void drawRect(const QRect &rectangle) 这是一个重载函数。

使用当前画笔和画刷绘制当前_rectangle_。

QPainter::drawRects

[public plain  ]

void drawRects(const QRectF *rectangles, int rectCount) 使用当前画笔和画刷绘制_rectangles_前_rectCount_个矩形。

See also drawRect()

QPainter::drawRects

[public plain  ]

void drawRects(const QVector &rectangles) 这是一个重载函数。

使用当前笔和画笔绘制给定_rectangles_。

QPainter::drawRects

[public plain  ]

void drawRects(const QRect *rectangles, int rectCount) 这是一个重载函数。

使用当前画笔和画刷绘制由_rectangles_出给前_rectCount_个矩形。

QPainter::drawRects

[public plain  ]

void drawRects(const QVector &rectangles) 这是一个重载函数。

使用当前笔和画笔绘制给定_rectangles_。

QPainter::drawRoundRect

[public plain  ]

void drawRoundRect(const QRectF &r, int xRnd, int yRnd) 绘制一个带有圆角的矩形_r_。

_xRnd_和_yRnd_参数为指定角的圆度。0表示角度,99是最大圆度。

填充矩形大小为 r.size() 。描边矩形大小为 r.size() 加上笔的宽度。

See also drawRoundedRect()

QPainter::drawRoundRect

[public plain  ]

void drawRoundRect(int x, int y, int w, int h, int , int ) 这是一个重载函数。

绘制以_x_,y_为坐标,宽为_w,高为_h_圆角矩形。

QPainter::drawRoundRect

[public plain  ]

void drawRoundRect(const QRect &r, int xRnd, int yRnd) 这是一个重载函数。

绘制一个带有圆角的矩形_r_。

QPainter::drawRoundedRect

[public plain  ]

void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode) 绘制给定_rect_圆角矩形。

_xRadius_和_yRadius_参数指定椭圆半径,该半径定义了圆角矩形的角。当_mode_为 Qt::RelativeSize 时,_xRadius_和_yRadius_分别以矩形宽度和高度的一半的百分比指定,并且应在0.0到100.0的范围内。

填充矩形大小为 rect.size() 。描边矩形大小为 rect.size() 加上笔的宽度。

See also drawRect() QPen

QPainter::drawRoundedRect

[public plain  ]

void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode) 这是一个重载函数。

绘制以_x_,_y_为坐标,宽为_w_,高为_h_圆角矩形。

QPainter::drawRoundedRect

[public plain  ]

void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode) 这是一个重载函数。

绘制给定_rect_圆角矩形。

QPainter::drawStaticText

[public plain  ]

void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText) 在_topLeftPosition_处绘制给定_staticText_文本。

文本将使用设置好的字体和转换绘制。如果设置字体时与初始化 QStaticText 时不同,则必须重新计算布局。使用 QStaticText::prepare() 去初始化_staticText_的字体和转换,它在稍后被绘制。

如果_topLeftPosition_在与_staticText_初始化,或与最后绘制时不同,那么在将文本转换到新位置时将有轻微的开销。

**Note:**如果绘画者的变换不是仿射的,则将使用对 drawText() 的常规调用来绘制_staticText_,从而失去任何可能改善性能的可能性。

Note: y 轴位置被用作字体顶部。

See also QStaticText

QPainter::drawStaticText

[public plain  ]

void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText) 这是一个重载函数。

在_topLeftPosition_处绘制给定_staticText_文本。

Note: y 轴位置被用作字体顶部。

QPainter::drawStaticText

[public plain  ]

void drawStaticText(int left, int top, const QStaticText &staticText) 这是一个重载函数。

在坐标_left_和_top_绘制_staticText_ 。

Note: y 轴位置被用作字体顶部。

QPainter::drawText

[public plain  ]

void drawText(const QPointF &position, const QString &text) 从给定_position_开始,以当前定义的文本方向绘制给定_text_。

这个函数不处理换行符(\n),因为它不能将文本分成多行,也不能显示换行符。如果希望使用换行符绘制多行文本,或者希望对文本进行换行,则需要对矩形进行重载。

默认情况下, QPainter 绘制的文本是反锯齿的。

Note: y 轴位置是字体的基线。

See also setFont() setPen()

QPainter::drawText

[public plain  ]

void drawText(const QPoint &position, const QString &text) 这是一个重载函数。

从给定_position_开始,以当前定义的文本方向绘制给定_text_。

默认情况下, QPainter 绘制的文本是反锯齿的。

Note: y 轴位置是字体的基线。

See also setFont() setPen()

QPainter::drawText

[public plain  ]

void drawText(int x, int y, const QString &text) 这是一个重载函数。

使用画家当前定义的文本方向,在位置(_x_,_y_)绘制给定_text_。

默认情况下, QPainter 绘制的文本是反锯齿的。

Note: y 轴位置是字体的基线。

See also setFont() setPen()

QPainter::drawText

[public plain  ]

void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect) 这是一个重载函数。

在提供的_rectangle_内绘制给定_text_,带有对齐标志的矩形定义了文本的锚点。

boundingRect_(如果不是 null )被设置为包围整个文本边框。如下图所示,虚线表示函数计算的_boundingRect_,虚线表示_rectangle:

参数是一个按位运算,或以下标志:

默认情况下, QPainter 绘制的文本是反锯齿的。

Note:_rectangle_的 y 坐标为字体顶部。

See also Qt::AlignmentFlag Qt::TextFlag boundingRect() layoutDirection()

QPainter::drawText

[public plain  ]

void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect) 这是一个重载函数。

根据指定_flags_在提供的_rectangle_内绘制给定_text_。

boundingRect_(如果不是 null )被设置为包围整个文本边框应该是什么。如下图所示,虚线表示函数计算的_boundingRect_,虚线表示_rectangle:

默认情况下, QPainter 绘制的文本是反锯齿的。

Note:_rectangle_的 y 坐标为字体顶部。

See also setFont() setPen()

QPainter::drawText

[public plain  ]

void drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect) 这是一个重载函数。

在以(x_,_y )为原点,宽度为_width_,高度为_height_的矩形内,绘制给定_text_。

_boundingRect_(如果不是 null )设置包围文本边框显示效果。如下图所示,虚线表示函数计算的_boundingRect_,虚线表示由_x_、_y_、_width_、_height_定义的矩形:

参数是一个按位运算,或以下标志:

默认情况下, QPainter 绘制的文本是反锯齿的。

Note: y 轴位置被用作字体顶部。

See also Qt::AlignmentFlag Qt::TextFlag setFont() setPen()

QPainter::drawText

[public plain  ]

void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option) 这是一个重载函数。

在指定的_rectangle_中绘制给定_text_,使用_option_以控制其位置、方位和方向。_option_中给出的选项会覆盖 QPainter 的设置。

默认情况下, QPainter 绘制的文本是反锯齿的。

Note:_rectangle_的 y 坐标为字体顶部。

See also setFont() setPen()

QPainter::drawText

[private plain  ]

void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding)

QPainter::drawTextItem

[private plain  ]

void drawTextItem(const QPointF &p, const QTextItem &ti)

QPainter::drawTextItem

[private plain  ]

void drawTextItem(int x, int y, const QTextItem &ti)

QPainter::drawTextItem

[private plain  ]

void drawTextItem(const QPoint &p, const QTextItem &ti)

QPainter::drawTiledPixmap

[public plain  ]

void drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position) 在原点位于_position_的矩形_rectangle_内,绘制平铺的_pixmap_。

对本接口的调用,类似于多次调用 drawPixmap() 来填充(平铺)一个区域,但根据底层窗口系统的不同,它的效率可能更高。

与普通 dpi 显示器相比,它会在高 dpi 显示器(devicePixelRatio> 1)上产生相同的视觉拼贴图案。 在_pixmap_上设置 devicePixelRation 可以控制平铺图像大小。 例如,将 devicePixelRation 设置平铺图像,宽度和高度为原来的1/2(在1x和2x显示器上),并在 2x 显示器上产生高分辨率输出。

_position_经常作用于 painter 中,与显示设备的设备像素比无关。

See also drawPixmap()

QPainter::drawTiledPixmap

[public plain  ]

void drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx, int sy) 这是一个重载函数。

在指定的矩形中绘制平铺的_pixmap_。

x_,_y )指明图像在绘制设备上的原点(左上点),宽度和高度分别为_width_和_height_。(_sx_, _sy_)指定要绘制的_pixmap_左上角的点;默认值为(0,0)。

QPainter::drawTiledPixmap

[public plain  ]

void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position) 这是一个重载函数。

在原点位于_position_的矩形_rectangle_内,绘制平铺的_pixmap_。

QPainter::end

[public plain  ]

bool end() 绘画结束。绘制时使用的任何资源都将被释放。通常不需要调用它,因为它是由析构函数调用的。

如果绘制器不再处于活动状态返回True;否则返回false

See also begin() isActive()

QPainter::endNativePainting

[public plain  ]

void endNativePainting() 手动发出本机绘制命令后重启 painter 。在调用任何绘制命令之前,允许 painter 恢复它所依赖的任何本机状态。

See also beginNativePainting()

QPainter::eraseRect

[public plain  ]

void eraseRect(const QRectF &rectangle) 擦掉给定矩形内的_rectangle_。相当于调用

See also fillRect()

QPainter::eraseRect

[public plain  ]

void eraseRect(int x, int y, int width, int height) 这是一个重载函数。

擦除矩形内,以(x, _y_)为顶点的一片区域,这片区域的宽度和高度分别为_width_和_height_。

QPainter::eraseRect

[public plain  ]

void eraseRect(const QRect &rectangle) 这是一个重载函数。

擦掉给定矩形内的_rectangle_。

QPainter::fillPath

[public plain  ]

void fillPath(const QPainterPath &path, const QBrush &brush) 使用给定_brush_填充给定_path_。轮廓不画出来。

或者,可以指定一个 QColor 代替 QBrushQBrush 构造函数(接受 QColor 参数)将自动创建一个实体模式笔刷。

See also drawPath()

QPainter::fillRect

[public plain  ]

void fillRect(const QRectF &rectangle, const QBrush &brush) 用指定_brush_填充给定_rectangle_。

或者,可以指定一个 QColor 代替 QBrushQBrush 构造函数(接受 QColor 参数)将自动创建一个实体模式笔刷。

See also drawRect()

QPainter::fillRect

[public plain  ]

void fillRect(int x, int y, int width, int height, const QBrush &brush) 这是一个重载函数。

使用给定_brush_,填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRect &rectangle, const QBrush &brush) 这是一个重载函数。

用指定_brush_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRectF &rectangle, const QColor &color) 这是一个重载函数。

用指定_color_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(int x, int y, int width, int height, const QColor &color) 这是一个重载函数。

使用给定_color_,填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRect &rectangle, const QColor &color) 这是一个重载函数。

用指定_color_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(int x, int y, int width, int height, Qt::GlobalColor color) 这是一个重载函数。

使用给定_color_,填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRect &rectangle, Qt::GlobalColor color) 这是一个重载函数。

用指定_color_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRectF &rectangle, Qt::GlobalColor color) 这是一个重载函数。

用指定_color_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(int x, int y, int width, int height, Qt::BrushStyle style) 这是一个重载函数。

使用指定笔刷_style_,用给定_width_和_height_填充从(_x_,_y_)坐标开始地矩形。

QPainter::fillRect

[public plain  ]

void fillRect(const QRect &rectangle, Qt::BrushStyle style) 这是一个重载函数。

用指定笔刷_style_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRectF &rectangle, Qt::BrushStyle style) 这是一个重载函数。

用指定笔刷_style_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(int x, int y, int width, int height, QGradient::Preset preset) 这是一个重载函数。

用指定_preset_填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRect &rectangle, QGradient::Preset preset) 这是一个重载函数。

用指定_preset_填充给定_rectangle_。

QPainter::fillRect

[public plain  ]

void fillRect(const QRectF &rectangle, QGradient::Preset preset) 这是一个重载函数。

用指定_preset_填充给定_rectangle_。

QPainter::font

[public plain  ]

const QFont & font() const 返回当前用于设置绘制文本的字体。

See also setFont() drawText() QPainter#Settings

QPainter::fontInfo

[public plain  ]

QFontInfo fontInfo() const 如果绘制器处于活动状态,返回绘制器字体信息。否则,返回值为未定义的。

See also font() isActive() QPainter#Settings

QPainter::fontMetrics

[public plain  ]

QFontMetrics fontMetrics() const 如果绘制器处于活动状态,则返回绘制器字体规格。否则,返回值为未定义的。

See also font() isActive() QPainter#Settings

QPainter::hasClipping

[public plain  ]

bool hasClipping() const 如果设置了剪切,返回True;否则返回false

See also setClipping() QPainter#Clipping

QPainter::initFrom

[public plain  ]

void initFrom(const QPaintDevice *device) 使用_device_给定数据来初始化画笔、背景和字体。

See also begin() QPainter#Settings

QPainter::isActive

[public plain  ]

bool isActive() const 如果 begin() 已经被调用且 end() 还没有被调用,返回True;否则返回false

See also begin() QPaintDevice::paintingActive()

QPainter::layoutDirection

[public plain  ]

Qt::LayoutDirection layoutDirection() const 返回绘制器绘制文本时使用的布局方向。

See also QTextOption::textDirection() setLayoutDirection() drawText() QPainter#Settings

QPainter::matrix

[public plain  ]

const QMatrix & matrix() const 使用 worldTransform() 代替。

See also setMatrix() worldTransform()

QPainter::matrixEnabled

[public plain  ]

bool matrixEnabled() const 使用 worldMatrixEnabled() 代替。

See also setMatrixEnabled() worldMatrixEnabled()

QPainter::opacity

[public plain  ]

qreal opacity() const 返回绘制器不透明度。缺省值为1。

See also setOpacity()

QPainter::operator=

[private copy-assign  ]

QPainter & operator=(const QPainter &)

QPainter::paintEngine

[public plain  ]

QPaintEngine * paintEngine() const 如果绘制器处于活动状态,则返回绘制器当前正在操作的绘制引擎;否则返回0。

See also isActive()

QPainter::pen

[public plain  ]

const QPen & pen() const 返回 painter's 当前笔。

See also setPen() QPainter#Settings

QPainter::qt_check_for_QGADGET_macro

[private plain  ]

void qt_check_for_QGADGET_macro()

QPainter::qt_static_metacall

[private plain static ]

void qt_static_metacall(QObject *, QMetaObject::Call , int , void **)

QPainter::redirected

[public plain static ]

QPaintDevice * redirected(const QPaintDevice *device, QPoint *offset) 使用 QWidget::render() 会取消这个函数的使用。

返回替换_device_后的指针。可选的输出参数_offset_返回被替换设备的偏移量。

**Warning:**在 QPainter API 中使用重定向意味着 QPainter::begin()QPaintDevice 的析构函数需要保留一小段时间的互斥。 这将会影响性能,因此强烈建议使用 QWidget::render

See also setRedirected() restoreRedirected()

QPainter::renderHints

[public plain  ]

QPainter::RenderHints renderHints() const 返回一个标志,指定为该绘制器设置渲染提示。

See also setRenderHints() testRenderHint() QPainter#Rendering Quality

QPainter::resetMatrix

[public plain  ]

void resetMatrix() 重置使用 translate()scale()shear()rotate()setWorldMatrix()setViewport()setWindow() 所做的任何转换。

建议使用 resetTransform() 而不是这个函数来保存透视图转换的属性。

See also QPainter#Coordinate Transformations

QPainter::resetTransform

[public plain  ]

void resetTransform() 重置使用 translate()scale()shear()rotate()setWorldTransform()setViewport()setWindow() 所做的任何转换。

See also Coordinate Transformations

QPainter::restore

[public plain  ]

void restore() 恢复当前 painter 状态(从堆栈中弹出保存的状态)。

See also save()

QPainter::restoreRedirected

[public plain static ]

void restoreRedirected(const QPaintDevice *device) 使用 QWidget::render() 会取消这个函数的使用。

调用 setRedirected() 后,为给定_device_恢复先前的重定向。

**Warning:**在 QPainter API 中使用重定向意味着 QPainter::begin()QPaintDevice 的析构函数需要保留一小段时间的互斥。 这将会影响性能,因此强烈建议使用 QWidget::render

See also redirected()

QPainter::rotate

[public plain  ]

void rotate(qreal angle) 顺时针旋转坐标系统。给定_angle_参数是以度为单位的。

See also setWorldTransform() QPainter#Coordinate Transformations

QPainter::save

[public plain  ]

void save() 保存当前绘制状态(将状态压入堆栈)。A后面必须跟一个相应的 restore()end() 函数的作用是:展开栈。

See also restore()

QPainter::scale

[public plain  ]

void scale(qreal sx, qreal sy) 将坐标系统按(sx_,_sy )缩放。

See also setWorldTransform() QPainter#Coordinate Transformations

QPainter::setBackground

[public plain  ]

void setBackground(const QBrush &brush) 将画笔的背景画笔设置为给定_brush_。

背景笔刷是在绘制不透明文本、点画线和位图时填充的笔刷。背景笔刷在透明背景模式下没有效果(这是默认模式)。

See also background() setBackgroundMode() QPainter#Settings

QPainter::setBackgroundMode

[public plain  ]

void setBackgroundMode(Qt::BGMode mode) 设置 painter 的背景模式为给定。

Qt::TransparentMode (默认模式)在不设置背景像素的情况下绘制点画线和文本。 Qt::OpaqueMode 用当前背景颜色填充这些空间。

注意,如果绘制透明的位图或像素图,必须使用 QPixmap::setMask()

See also backgroundMode() setBackground() QPainter#Settings

QPainter::setBrush

[public plain  ]

void setBrush(const QBrush &brush) 将 painter's 画笔设置为给定_brush_。

painter's 画笔定义了如何填充形状。

See also brush() QPainter#Settings

QPainter::setBrush

[public plain  ]

void setBrush(Qt::BrushStyle style) 这是一个重载函数。

设置 painter's 画笔为黑色和指定_style_。

QPainter::setBrushOrigin

[public plain  ]

void setBrushOrigin(const QPointF &position) 将画笔设置原点为_position_。

画笔原点指定了painter's 画笔的(0,0)坐标。

注意,尽管在 Qt 3中,小部件 brushOrigin() 必需采用父类的背景,但从 Qt4 起,不再是这种情况。在 Qt4 中,除非明确告诉绘制器将小部件 QWidget::autoFillBackground 的属性设置为 True,否则不会画背景。

See also brushOrigin() QPainter#Settings

QPainter::setBrushOrigin

[public plain  ]

void setBrushOrigin(int x, int y) 这是一个重载函数。

设置画笔的原点为点(x,y)。

QPainter::setBrushOrigin

[public plain  ]

void setBrushOrigin(const QPoint &position) 这是一个重载函数。

设置画笔的原点到给定_position_。

QPainter::setClipPath

[public plain  ]

void setClipPath(const QPainterPath &path, Qt::ClipOperation operation) 启用剪辑,设置绘制器剪辑路径设置为_path_,并设置_operation_。

请注意,剪辑路径是在逻辑(painter)坐标中指定的。

See also clipPath() clipRegion() QPainter#Clipping

QPainter::setClipRect

[public plain  ]

void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation) 启用剪辑,设置剪辑区域为_rectangle_,使用指定_operation_操作。默认操作是替换当前剪辑矩形。

请注意,剪辑矩形是在逻辑(painter)坐标中指定的。

See also clipRegion() setClipping() QPainter#Clipping

QPainter::setClipRect

[public plain  ]

void setClipRect(const QRect &rectangle, Qt::ClipOperation operation) 这是一个重载函数。

启用剪辑,设置剪辑区域为_rectangle_,使用指定_operation_操作。

QPainter::setClipRect

[public plain  ]

void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation) 启用剪辑,设置剪辑区域为矩形,矩形原点为(_x_,_y_), 宽度和高度分别为_width_和_height_。

QPainter::setClipRegion

[public plain  ]

void setClipRegion(const QRegion &region, Qt::ClipOperation operation) 设置剪辑区域为_region_, 使用指定动作_operation_。默认剪裁操作是替换当前剪裁区域。

注意剪辑区域是以逻辑坐标给出的。

See also clipRegion() setClipRect() QPainter#Clipping

QPainter::setClipping

[public plain  ]

void setClipping(bool enable) 如果_enable_为 True 则启用剪裁,如果_enable_为 false 则禁用剪裁。

See also hasClipping() QPainter#Clipping

QPainter::setCompositionMode

[public plain  ]

void setCompositionMode(QPainter::CompositionMode mode) 将组合模式设置为给定_mode_。

**Warning:**只有运行在 QImage 上的 QPainter 完全支持所有的组合模式。如 compositionMode() 所述,X11 支持 RasterOp 模式。

See also compositionMode()

QPainter::setFont

[public plain  ]

void setFont(const QFont &font) 设置 painter's 字体为给定_font_。

该字体被后续的 drawText() 函数中使用。文字颜色于所设置笔颜色相同。

如果设置了一个不可用的字体,Qt 会找到一个接近的匹配。 font() 将返回使用的设置,而将返回实际使用的字体(可能是相同的)。

See also font() drawText() QPainter#Settings

QPainter::setLayoutDirection

[public plain  ]

void setLayoutDirection(Qt::LayoutDirection direction) 设置 painter 绘制文本时使用的布局方向为指定的_direction_。

默认值是 Qt::LayoutDirectionAuto ,它将隐式地根据绘制的文本确定方向。

See also QTextOption::setTextDirection() layoutDirection() drawText() QPainter#Settings

QPainter::setMatrix

[public plain  ]

void setMatrix(const QMatrix &matrix, bool combine) 使用 setWorldTransform() 代替。

See also matrix() setWorldTransform()

QPainter::setMatrixEnabled

[public plain  ]

void setMatrixEnabled(bool enable) 使用 setWorldMatrixEnabled() 代替。

See also matrixEnabled() setWorldMatrixEnabled()

QPainter::setOpacity

[public plain  ]

void setOpacity(qreal opacity) 将 painter 的不透明度设置为_opacity_。 该值应在0.0到1.0的范围内,其中0.0是完全透明的,而1.0是完全不透明的。

在 painter 上设置不透明度将单独应用于所有绘图操作。

See also opacity()

QPainter::setPen

[public plain  ]

void setPen(const QPen &pen) 将画家的笔设置为给定_pen_。

_pen_定义了绘制线条和轮廓的方式,还定义了文字颜色。

See also pen() QPainter#Settings

QPainter::setPen

[public plain  ]

void setPen(const QColor &color) 这是一个重载函数。

将 painter's 笔设置为 Qt::SolidLine 样式,宽度1和指定_color_。

QPainter::setPen

[public plain  ]

void setPen(Qt::PenStyle style) 这是一个重载函数。

将 painter's 笔设置为给定_style_,宽度1和黑色。

QPainter::setRedirected

[public plain static ]

void setRedirected(const QPaintDevice *device, QPaintDevice *replacement, const QPoint &offset) 请使用 QWidget::render() 代替。

将给定绘画_device_的所有绘画命令重定向到_replacement_设备。 可选的点偏移量定义了源设备内的_offset_。

在调用 begin() 函数之前,重定向将不起作用。在重定向之前,请确保为给定设备的绘画程序(如果有的话)调用 end() 。 调用 restoreRedirected() 以恢复先前的重定向。

**Warning:**在 QPainter API 中使用重定向意味着 QPainter::begin()QPaintDevice 的析构函数需要保留一小段时间的互斥。 这将会影响性能,因此强烈建议使用 QWidget::render

See also redirected() restoreRedirected()

QPainter::setRenderHint

[public plain  ]

void setRenderHint(QPainter::RenderHint hint, bool on) 如果_on_为 True,在 painter 上设置给定渲染_hint_;否则清除渲染提示。

See also setRenderHints() renderHints() QPainter#Rendering Quality

QPainter::setRenderHints

[public plain  ]

void setRenderHints(QPainter::RenderHints hints, bool on) 如果_on_为 True,在 painter 上设置给定渲染_hints_;否则清除渲染提示。

See also setRenderHint() renderHints() QPainter#Rendering Quality

QPainter::setTransform

[public plain  ]

void setTransform(const QTransform &transform, bool combine) 设置世界坐标转换矩阵。如果_combine_为真,则指定的_transform_与当前矩阵结合;否则,它将替换当前矩阵。

See also transform() setWorldTransform()

QPainter::setViewTransformEnabled

[public plain  ]

void setViewTransformEnabled(bool enable) 如果_enable_为 True 则启用视图转换,如果_enable_为 false 则禁用视图转换。

See also viewTransformEnabled() Coordinate System#Window-Viewport Conversion

QPainter::setViewport

[public plain  ]

void setViewport(const QRect &rectangle) 将 painter's 视口矩形设置为给定_rectangle_,并启用视图转换。

视口矩形是视图转换的一部分。视口指定设备坐标系统。它的姊妹函数 window() 指定逻辑坐标系统。

默认视口矩形与设备的矩形相同。

See also viewport() viewTransformEnabled() Coordinate System#Window-Viewport Conversion

QPainter::setViewport

[public plain  ]

void setViewport(int x, int y, int width, int height) 这是一个重载函数。

设置painter's 窗口小部件为从(_x_, _y_)坐标开始并给定_width_和_height_的矩形。

QPainter::setWindow

[public plain  ]

void setWindow(const QRect &rectangle) 将 painter's 窗口小部件设置为给定_rectangle_,并启用视图转换。

窗口矩形是视图转换的一部分。窗口指定逻辑坐标系统。它的姊妹函数 viewport() 指定设备坐标系统。

默认窗口矩形与设备的矩形相同。

See also window() viewTransformEnabled() Coordinate System#Window-Viewport Conversion

QPainter::setWindow

[public plain  ]

void setWindow(int x, int y, int width, int height) 这是一个重载函数。

设置 painter's 窗口小部件为从(_x_,_y_)坐标开始并给定_width_和_height_的矩形。

QPainter::setWorldMatrix

[public plain  ]

void setWorldMatrix(const QMatrix &matrix, bool combine) 将转换矩阵设置为_matrix_并启用转换。

**Note:**建议使用 setWorldTransform() ,而不是这个函数来保存透视图转换的属性。

若_combine_为真,则将_matrix_与当前变换矩阵结合否则,_matrix_替换当前变换矩阵。

如果_matrix_是单位矩阵并且_combine_为 false ,则此函数调用 setWorldMatrixEnabled (false) 。(单位矩阵是 QMatrix::m11()QMatrix::m22() 分别为 1.0 和 0.0 的矩阵。)

以下函数可以在不使用 QMatrix 的情况下转换坐标系:

它们在 painter's worldMatrix() 上运行,实现如下:

请注意,当在使用 QPicture 绘制功能时,应该始终将_combine_设置为 True 。否则,可能无法使用额外的转换重放图片;请使用 translate()scale() 等方便安全的函数。

有关坐标系、转换和窗口-视口转换的更多信息,请参见 Coordinate System

See also worldMatrix() setWorldTransform() QTransform

QPainter::setWorldMatrixEnabled

[public plain  ]

void setWorldMatrixEnabled(bool enable) 如果_enable_为 True 则启用转换,如果_enable_为 false 则禁用转换。世界坐标转换矩阵没有改变。

See also worldMatrixEnabled() worldTransform() QPainter#Coordinate Transformations

QPainter::setWorldTransform

[public plain  ]

void setWorldTransform(const QTransform &matrix, bool combine) 设置世界坐标转换矩阵。如果_combine_为真,则指定_matrix_与当前矩阵结合; 否则,它将替换当前矩阵。

See also worldTransform() transform() setTransform()

QPainter::shear

[public plain  ]

void shear(qreal sh, qreal sv) 在(_sh_,_sv_)位置剪切坐标系。

See also setWorldTransform() QPainter#Coordinate Transformations

QPainter::strokePath

[public plain  ]

void strokePath(const QPainterPath &path, const QPen &pen) 使用指定_pen_绘制_path_的轮廓(笔画)。

See also fillPath() QPainter#Drawing

QPainter::testRenderHint

[public plain  ]

bool testRenderHint(QPainter::RenderHint hint) const 如果设置了_hint_,则返回True;否则返回false

See also renderHints() setRenderHint()

QPainter::transform

[public plain  ]

const QTransform & transform() const worldTransform() 的别名。返回世界坐标转换矩阵。

See also setTransform() worldTransform()

QPainter::translate

[public plain  ]

void translate(const QPointF &offset) 根据给定_offset_转换坐标系统;即给定_offset_被添加到点上。

See also setWorldTransform() QPainter#Coordinate Transformations

QPainter::translate

[public plain  ]

void translate(const QPoint &offset) 这是一个重载函数。

根据给定_offset_转换坐标系统。

QPainter::translate

[public plain  ]

void translate(qreal dx, qreal dy) 这是一个重载函数。

用向量(dx, dy)来平移坐标系。

QPainter::viewTransformEnabled

[public plain  ]

bool viewTransformEnabled() const 如果视图转换已启用,则返回True;否则返回 false。

See also setViewTransformEnabled() worldTransform()

QPainter::viewport

[public plain  ]

QRect viewport() const 返回视口矩形。

See also setViewport() setViewTransformEnabled()

QPainter::window

[public plain  ]

QRect window() const 返回窗口矩形。

See also setWindow() setViewTransformEnabled()

QPainter::worldMatrix

[public plain  ]

const QMatrix & worldMatrix() const 返回世界坐标转换矩阵。

由于它不保留透视图转换的属性,因此建议使用 worldTransform()

See also setWorldMatrix() QPainter#Coordinate Transformations Coordinate System

QPainter::worldMatrixEnabled

[public plain  ]

bool worldMatrixEnabled() const 如果启用了世界坐标转换,则返回True;否则返回 false 。

See also setWorldMatrixEnabled() worldTransform() Coordinate System

QPainter::worldTransform

[public plain  ]

const QTransform & worldTransform() const 返回世界坐标转换矩阵。

See also setWorldTransform()

QPainter::~QPainter

[public destructor  ]

~QPainter() 销毁 painter 。

Class::PixmapFragment

QPainter::PixmapFragment


Detailed Description

这个类与 QPainter::drawPixmapFragments() 函数一起使用,用来指定如何绘制像素图或像素图子矩形。 sourceLeft, sourceTop, width_和_height_当作变量被传入 QPainter::drawPixmapFragments() 函数的像素图中的源矩形。变量_x_、_y_、_width_和_height_用于计算绘制的目标矩形。_x_和_y_表示目标矩形的中心。目标矩形的_width_和_height_由_scaleX_和_scaleY_值缩放。然后将生成的目标_rotation_绕_x, _y_中心点旋转角度。

See also QPainter::drawPixmapFragments()

QPainter::PixmapFragment::create

[public plain static ]

PixmapFragment create(const QPointF &pos, const QRectF &sourceRect, qreal scaleX, qreal scaleY, qreal rotation, qreal opacity) 这是一个比较方便的函数,它返回一个 QPainter::PixmapFragment ,它由_pos_、_sourceRect_、_scaleX_、_scaleY_、_rotation_、_opacity_参数初始化。 定义数字图像合成支持的模式。 合成模式用于指定如何将一个图像(源)中的像素与另一图像(目标)中的像素合并。

请注意,用 RasterOp 前缀表示的逐位光栅操作模式,仅在 X11 和光栅绘图引擎中本机支持。这意味着在 Mac 上使用这些模式的唯一方法是通过 QImage 。对于带有 alpha 组件的笔和笔刷,不支持所指示的混合模式。同时,打开 QPainter::Antialiasing 渲染提示将有效地禁用 RasterOp 模式。

最常见的类型是 SourceOver (通常被称为 alpha 混合),其中源像素在目标像素上混合,以这样的方式,源的 alpha 组件定义像素的透明度。

一些合成模式需要在源或目标图像中有一个 alpha 通道来产生效果。为了获得最佳性能,首选的图像格式是 QImage::Format

设置合成模式后,它将适用于所有的绘画操作,笔,笔刷,渐变和像素图/图像绘制。

QPainter::CompositionMode_SourceOverCompositionMode_SourceOver

Constant Description
QPainter::CompositionMode_SourceOver 这是默认模式。源的 alpha 用于覆盖目标上的像素。
QPainter::CompositionMode_DestinationOverCompositionMode_DestinationOver
Constant Description
:------- :-----
QPainter::CompositionMode_DestinationOver 目标的 alpha 用于在源像素上覆盖源。此模式与 CompositionMode_SourceOver 相反。
QPainter::CompositionMode_ClearCompositionMode_Clear
Constant Description
:------- :-----
QPainter::CompositionMode_Clear 目标中的像素被清除(设置为完全透明),与源无关。
QPainter::CompositionMode_SourceCompositionMode_Source
Constant Description
:------- :-----
QPainter::CompositionMode_Source 输出是源像素。(这意味着基本的复制操作,并且在源像素不透明时与 SourceOver 相同)。
QPainter::CompositionMode_DestinationCompositionMode_Destination
Constant Description
:------- :-----
QPainter::CompositionMode_Destination 输出是目标像素。这意味着混合没有效果。此模式与 CompositionMode_Source 相反。
QPainter::CompositionMode_SourceInCompositionMode_SourceIn
Constant Description
:------- :-----
QPainter::CompositionMode_SourceIn 输出是源,其中 alpha 被目标的 alpha 减小。
QPainter::CompositionMode_DestinationInCompositionMode_DestinationIn
Constant Description
:------- :-----
QPainter::CompositionMode_DestinationIn 输出是目标,其中 alpha 被源的 alpha 减小。此模式与 CompositionMode_SourceIn 相反。
QPainter::CompositionMode_SourceOutCompositionMode_SourceOut
Constant Description
:------- :-----
QPainter::CompositionMode_SourceOut 输出是源,其中 alpha 的值是目标值的倒数。
QPainter::CompositionMode_DestinationOutCompositionMode_DestinationOut
Constant Description
:------- :-----
QPainter::CompositionMode_DestinationOut 输出是目的,其中 alpha 被源的倒数减去。此模式与 CompositionMode_SourceOut 相反。
QPainter::CompositionMode_SourceAtopCompositionMode_SourceAtop
Constant Description
:------- :-----
QPainter::CompositionMode_SourceAtop 源像素在目标的顶部混合,源像素的 alpha 值减去目标像素的 alpha 值。
QPainter::CompositionMode_DestinationAtopCompositionMode_DestinationAtop
Constant Description
:------- :-----
QPainter::CompositionMode_DestinationAtop 目标像素混合在源的顶部,目标像素的 alpha 被目标像素的 alpha 降低。此模式与 CompositionMode_SourceAtop 相反。
QPainter::CompositionMode_XorCompositionMode_Xor
Constant Description
:------- :-----
QPainter::CompositionMode_Xor 源的 alpha 与目标 alpha 的倒数相减,而目标的 alpha 与源 alpha 的倒数相减。CompositionMode_Xor 与位异或不同。
QPainter::CompositionMode_PlusCompositionMode_Plus
Constant Description
:------- :-----
QPainter::CompositionMode_Plus 源像素和目标像素的 alpha 和颜色都被添加到一起。
QPainter::CompositionMode_MultiplyCompositionMode_Multiply
Constant Description
:------- :-----
QPainter::CompositionMode_Multiply 输出是源颜色乘以目标颜色。将颜色与白色相乘会保持颜色不变,而将颜色与黑色相乘会生成黑色。
QPainter::CompositionMode_ScreenCompositionMode_Screen
Constant Description
:------- :-----
QPainter::CompositionMode_Screen 源颜色和目标颜色颠倒,然后相乘。用白色屏蔽颜色会产生白色,而用黑色屏蔽颜色则不会改变颜色。
QPainter::CompositionMode_OverlayCompositionMode_Overlay
Constant Description
:------- :-----
QPainter::CompositionMode_Overlay 根据目标颜色倍增或屏蔽颜色。目标颜色与源颜色混合,以反映目标的亮度或暗度。
QPainter::CompositionMode_DarkenCompositionMode_Darken
Constant Description
:------- :-----
QPainter::CompositionMode_Darken 选择源颜色和目标颜色中较深的颜色。
QPainter::CompositionMode_LightenCompositionMode_Lighten
Constant Description
:------- :-----
QPainter::CompositionMode_Lighten 选择源颜色和目标色中较亮的颜色。
QPainter::CompositionMode_ColorDodgeCompositionMode_ColorDodge
Constant Description
:------- :-----
QPainter::CompositionMode_ColorDodge 目标颜色变亮以反映源颜色。黑色源颜色使目标颜色保持不变。
QPainter::CompositionMode_ColorBurnCompositionMode_ColorBurn
Constant Description
:------- :-----
QPainter::CompositionMode_ColorBurn 目标颜色变暗以反映源颜色。白色源颜色保持目标颜色不变。
QPainter::CompositionMode_HardLightCompositionMode_HardLight
Constant Description
:------- :-----
QPainter::CompositionMode_HardLight 根据源色倍增或屏蔽颜色。光源颜色会使目标颜色变亮,而暗光源颜色会使目标颜色变暗。
QPainter::CompositionMode_SoftLightCompositionMode_SoftLight
Constant Description
:------- :-----
QPainter::CompositionMode_SoftLight 根据源颜色变暗或变亮颜色。类似于 CompositionMode_HardLight 。
QPainter::CompositionMode_DifferenceCompositionMode_Difference
Constant Description
:------- :-----
QPainter::CompositionMode_Difference 从较浅的颜色中减去较深的颜色。使用白色绘制将反转目标颜色,而使用黑色绘制将保持目标颜色不变。
QPainter::CompositionMode_ExclusionCompositionMode_Exclusion
Constant Description
:------- :-----
QPainter::CompositionMode_Exclusion 类似于合成模式的差异,但对比度较低。使用白色绘制将反转目标颜色,而使用黑色绘制将保持目标颜色不变。
QPainter::RasterOp_SourceOrDestinationRasterOp_SourceOrDestination
Constant Description
:------- :-----
QPainter::RasterOp_SourceOrDestination 对源像素和目标像素执行按位或运算(src OR dst)。
QPainter::RasterOp_SourceAndDestinationRasterOp_SourceAndDestination
Constant Description
:------- :-----
QPainter::RasterOp_SourceAndDestination 对源像素和目标像素执行按位与运算(src AND dst)。
QPainter::RasterOp_SourceXorDestinationRasterOp_SourceXorDestination
Constant Description
:------- :-----
QPainter::RasterOp_SourceXorDestination 对源像素和目标像素执行逐位XOR操作(src XOR dst)。
QPainter::RasterOp_NotSourceAndNotDestinationRasterOp_NotSourceAndNotDestination
Constant Description
:------- :-----
QPainter::RasterOp_NotSourceAndNotDestination 对源像素和目标像素执行逐位NOR操作((NOT src)AND (NOT dst))。
QPainter::RasterOp_NotSourceOrNotDestinationRasterOp_NotSourceOrNotDestination
Constant Description
:------- :-----
QPainter::RasterOp_NotSourceOrNotDestination 对源像素和目标像素执行逐位NAND操作((NOT src) OR (NOT dst))。
QPainter::RasterOp_NotSourceXorDestinationRasterOp_NotSourceXorDestination
Constant Description
:------- :-----
QPainter::RasterOp_NotSourceXorDestination 执行逐位运算,其中源像素被反转,然后与目标进行异或运算((NOT src) XOR dst)。
QPainter::RasterOp_NotSourceRasterOp_NotSource
Constant Description
:------- :-----
QPainter::RasterOp_NotSource 在源像素反转的位置执行逐位操作(NOT src)。
QPainter::RasterOp_NotSourceAndDestinationRasterOp_NotSourceAndDestination
Constant Description
:------- :-----
QPainter::RasterOp_NotSourceAndDestination 执行逐位运算,其中源取反,然后与目标进行“与”运算((NOT src) AND dst)。
QPainter::RasterOp_SourceAndNotDestinationRasterOp_SourceAndNotDestination
Constant Description
:------- :-----
QPainter::RasterOp_SourceAndNotDestination 执行逐位运算,其中源和反转的目标像素进行“与”运算(src AND (NOT dst)。
QPainter::RasterOp_NotSourceOrDestinationRasterOp_NotSourceOrDestination
Constant Description
:------- :-----
QPainter::RasterOp_NotSourceOrDestination 执行逐位运算,其中源取反,然后与目标进行“或”运算((NOT src) OR dst)。
QPainter::RasterOp_ClearDestinationRasterOp_ClearDestination
Constant Description
:------- :-----
QPainter::RasterOp_ClearDestination 目标中的像素将被清除(设置为0),而与源无关。
QPainter::RasterOp_SetDestinationRasterOp_SetDestination
Constant Description
:------- :-----
QPainter::RasterOp_SetDestination 目标中的像素设置(设置为1),而与源无关。
QPainter::RasterOp_NotDestinationRasterOp_NotDestination
Constant Description
:------- :-----
QPainter::RasterOp_NotDestination 执行目标像素取反的按位运算(NOT dst)。
QPainter::RasterOp_SourceOrNotDestinationRasterOp_SourceOrNotDestination
Constant Description
:------- :-----
QPainter::RasterOp_SourceOrNotDestination 执行按位运算,其中源与反转的目标像素进行“或”运算(src OR (NOT dst))。

See also compositionMode() setCompositionMode() QPainter#Composition Modes Image Composition Example QPainter::OpaqueHintOpaqueHint

Constant Description
QPainter::OpaqueHint 指示要绘制像素图片段是不透明的。不透明的片段绘制起来可能更快。

See also QPainter::drawPixmapFragments() QPainter::PixmapFragment RenderHints 用于为 QPainter 指定标志,任何给定引擎可能会或可能不会遵守。

QPainter::AntialiasingAntialiasing

Constant Description
QPainter::Antialiasing 指示引擎应尽可能消除图元边缘的锯齿。
QPainter::TextAntialiasingTextAntialiasing
Constant Description
:------- :-----
QPainter::TextAntialiasing 指示引擎应尽可能消除文本锯齿。要强行禁用文本的抗锯齿,请勿使用此提示。相反,在字体样式策略上设置 QFont::NoAntialias
QPainter::SmoothPixmapTransformSmoothPixmapTransform
Constant Description
:------- :-----
QPainter::SmoothPixmapTransform 指示引擎应使用平滑的 pixmap 转换算法(如双线性)而不是最近邻。
QPainter::HighQualityAntialiasingHighQualityAntialiasing
Constant Description
:------- :-----
QPainter::HighQualityAntialiasing 此值已过时并将被忽略,请改用反锯齿渲染提示。
QPainter::NonCosmeticDefaultPenNonCosmeticDefaultPen
Constant Description
:------- :-----
QPainter::NonCosmeticDefaultPen 此值已被弃用, QPen 默认值现在为“非修饰”。
QPainter::Qt4CompatiblePaintingQt4CompatiblePainting
Constant Description
:------- :-----
QPainter::Qt4CompatiblePainting 兼容性提示告诉引擎使用与 QT 4 中相同的基于 X11 的填充规则,其中锯齿渲染偏移略小于半个像素。也会将默认构造的笔视为可修饰的。在将 QT 4 应用程序移植到 QT 5 时可能很有用。
QPainter::LosslessImageRenderingLosslessImageRendering
Constant Description
:------- :-----
QPainter::LosslessImageRendering 尽可能使用无损图像渲染。目前,此提示仅在 QPainter 通过 QPrinterQPdfWriter 输出 PDF 文件时触发,其中 drawImage() / drawPixmap() 调用将使用无损压缩算法而不是有损 JPEG 压缩对图像进行编码。该值是在 QT 5.13 中添加。

See also renderHints() setRenderHint() QPainter#Rendering Quality Concentric Circles Example

typedef QPainter::PixmapFragmentHints

typedef QPainter::QtGadgetHelper

typedef QPainter::RenderHints