- qtgui
- qtdbus
- qtwidgets
- qtcore
- dtkcore
- qsettingbackend_zh
- dobject_zh
- abstractappender_zh
- abstractstringappender_zh
- dfilewatcher_zh
- outputdebugappender_zh
- dsettingsbackend_zh
- drecentmanager_zh
- ddesktopentry_zh
- consoleappender_zh
- gsettingsbackend_zh
- dsettingsgroup_zh
- dlogmanager_zh
- fileappender_zh
- dsettings_zh
- dfilesystemwatcher_zh
- dfilewatchermanager_zh
- dbasefilewatcher_zh
- dtkgui
- dtkwidget
- dviewitemaction_zh
- dstandarditem_zh
- dfiledialog_zh
- dclipeffectwidget_zh
- danchors_zh
- dgraphicsclipeffect_zh
- dstyle_zh
- dcoloredprogressbar_zh
- dbuttonboxbutton_zh
- dlabel_zh
- dtiplabel_zh
- darrowlinedrawer_zh
- daboutdialog_zh
- dsettingswidgetfactory_zh
- dsearchcombobox_zh
- dcrumbedit_zh
- dcommandlinkbutton_zh
- dsettingsdialog_zh
- dwindowoptionbutton_zh
- dspinner_zh
- dsimplelistview_zh
- dwaterprogress_zh
- dmainwindow_zh
- dhidpihelper_zh
- dslider_zh
- dpasswordedit_zh
- danchorinfo_zh
- dmpriscontrol_zh
- darrowbutton_zh
- dbackgroundgroup_zh
- dcircleprogress_zh
- dwarningbutton_zh
- dwindowclosebutton_zh
- dvideowidget_zh
- dfilechooseredit_zh
- dblureffectwidget_zh
- darrowrectangle_zh
- dsearchedit_zh
- dfloatingmessage_zh
- dswitchlineexpand_zh
- dtabbar_zh
- dlineedit_zh
- danchorsbase_zh
- dstylediconengine_zh
- dwindowmaxbutton_zh
- dpageindicator_zh
- dsuggestbutton_zh
- dapplicationsettings_zh
- dtooltip_zh
- dwindowminbutton_zh
- ddrawer_zh
- dtitlebar_zh
- dsimplelistitem_zh
- dpicturesequenceview_zh
qpainter_zh
Class::QPainter
暂无该属性
Detailed Description
QPainter 类在窗口小部件和其它绘制设备上执行基本绘制。 QPainter 提供了高度优化的功能来完成 GUI 程序所需要大多数绘图工作。它可以绘制出从简单线条到如饼图和弦等复杂图形的一切图形。它还可以绘制出对齐文本和像素图。通常,它在一个“自然”坐标系中绘制,但是它也可以进行视图坐标变换和世界坐标变换。 QPainter 可以对继承自 QPaintDevice 类的任何对象进行操作。
QPainter 常见用法是在窗口小部件绘制事件中:构造和自定义(例如设置笔或者画刷)painter 。然后进行绘制。记得在绘制后销毁 QPainter 对象。例如:
QPainter 核心功能是绘图,但是该类还提供了一些允许自定义 QPainter 的设置及其渲染质量函数,以及使用剪裁的函数。此外,还可以通过指定 painter 组合模式来控制如何将不同形状合并在一起。
函数 isActive() 指示 painter 是否处于活动状态。painter 是由 begin() 函数激活,构造函数接受 QPaintDevice 类型的参数函数和析构函数将其停用。
QPainter 与 QPaintDevice 和 QPaintEngine 类一起构成了 Qt 绘图系统的基础。 QPainter 是用于执行绘图操作类 QPaintDevice 表示可以使用 QPainter 进行绘制的设备。 QPaintEngine 提供了 painter 在不同类型设备上的绘图接口。如果 painter 处于激活状态, device() 返回 painter 正在进行绘制的绘制设备,而 paintEngine() 返回 painter 当前正在操作的绘制引擎。更多有关详细信息,请参见 Paint System 。
有时,要求在不通用 QPaintDevice 上进行绘画时, QPainter 支持一个静态函数 setRedirected() 来执行此操作。
**Warning:**当绘制设备是一个窗口小部件时,只能在 paintEvent() 函数或 paintEvent() 调用函数中使用。
属性设置
可以根据自己喜好自定义多个设置属性来进行 QPainter 绘制:
- font() 用于绘制文本字体。如果 painter 为 isActive() ,则可以分别使用 fontInfo() 和 fontMetrics() 函数检索有关当前设置字体及其度量的信息。
- brush() 定义用于填充形状颜色或图案。
- pen() 定义用于绘制线条或者边界颜色或者点画。
- backgroundMode() 定义是否存在 background() ,即它是 Qt::OpaqueMode 或 Qt::TransparentMode 。
- background() 仅仅在 backgroundMode() 是 Qt::OpaqueMode 以及 pen() 是点画时才适用。在这种情况下,它描述点画中背景像素的颜色。
- brushOrigin() 定义平铺画笔的原点,通常是窗口小部件背景的原点。
- viewport() 、 window() 、 worldTransform() 构成了 painter 的坐标转换系统。更多有关详细信息,请参见 Coordinate Transformations 部分和 Coordinate System 文档。
- hasClipping() 说明 painter 是否被剪裁。(绘制设备也会被剪裁。)如果 painter 被剪裁,则会被剪裁到 clipRegion() 。
- layoutDirection() 定义绘制文本时 painter 使用的布局方向。
- worldMatrixEnabled() 指示是否启用世界坐标转换。
- viewTransformEnabled() 指示是否启用视图坐标转换。
请注意,以上这些设置中有一些设置反映了某些绘制设备中的设置,例如: QWidget::font() 。 QPainter::begin() 函数(或等效的 QPainter 构造函数)将会从绘制设备复制这些属性。
可以随时通过调用 save() 函数来保存 QPainter 的状态,该函数将所有可用的设置保存在一个内部堆栈上。 restore() 函数将其恢复。
绘制
QPainter 提供了绘制大多数基本图形函数: drawPoint() , drawPoints() , drawLine() , drawRect() , drawRoundedRect() , drawEllipse() , drawArc() , drawPie() , drawChord() , drawPolyline() , drawPolygon() , drawConvexPolygon() 和 drawCubicBezier() 。 drawRects() 和 drawLines() 这两个函数使用当前画笔或者笔刷在给定 QRect 或 QLine 数组中绘制给定数量的矩形或者线条。
QPainter 类还提供了用给定 QBrush 填充给定 QRect 的 fillRect() 函数以及擦除给定矩形内区域的 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 内建的虚线样式并显示如何使用自定义模式来扩展可用模式的范围。
文本绘制是使用 drawText() 完成的。当需要细粒度定位时, boundingRect() 会告诉给定 drawText() 命令将会绘制的位置。
绘制像素图和图像
Qt 有绘制像素图/图像函数,即 drawPixmap() 、 drawImage() 和 drawTiledPixmap() 。 drawPixmap() 和 drawImage() 产生相同结果,只是 drawPixmap() 在屏幕上更快,而在 QPrinter 或者其它设备上 drawImage() 可能更快。
Qt 有一个可以绘制整个 QPicture 内容的 drawPicture() 函数,这个 drawPicture() 函数是唯一一个忽略所有绘制设置函数,因为 QPicture 有自己的设置。
绘制高分辨率版本像素图和图像
高分辨率版本像素图device pixel ratio值大于1(请参见 QImageReader , QPixmap::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 |
|||
---|---|---|---|
最常用的变换是缩放、旋转、平移和剪切。使用 scale() 函数按给定偏移量缩放坐标系,使用 rotate() 函数顺时针旋转坐标系,使用 translate() 函数平移坐标系(即向点添加给定偏移量)。也可以使用 shear() 函数围绕原点扭曲坐标系。有关剪切坐标系的可视化,请参见 painting/affine 示例。
另请参见 painting/transformations 示例,它显示了转换如何影响 QPainter 渲染图形图元方式。特别地是它显示了转换的顺序如何影响结果。
painting/affine示例显示了 Qt 在绘制操作上执行仿射变换的能力。该 demo 还允许用户试验转换操作,并立即看到结果。 |
所有转换操作都在转换 worldTransform() 上进行操作。矩阵将平面中的一个点变换为另一个点。更多有关变换矩阵详细信息,请参见 Coordinate System 和 QTransform 文档。
setWorldTransform() 函数可以替换或添加到当前设置 worldTransform() 。 resetTransform() 函数可重置使用 translate() , scale() , shear() , rotate() , setWorldTransform() , setViewport() 和 setWindow() 函数进行的任何转换。 deviceTransform() 返回从逻辑坐标转换为平台相关绘制设备的设备坐标矩阵。后一个函数是只有在平台相关句柄上使用平台绘制命令时才需要,并且平台本身不执行转换。
当使用 QPainter 绘图时,使用逻辑坐标指定点,然后将其转换为绘图设备物理坐标。逻辑坐标到物理坐标的映射是由 QPainter 的 combinedTransform() 处理,它是 viewport() 和 window() 以及 worldTransform() 的组合。 viewport() 表示指定任意矩形的物理坐标, window() 以逻辑坐标描述相同的矩形,与转换矩阵相同。
另请参见 Coordinate System 。
剪切
QPainter 可以将任何绘图操作剪切到矩形、区域或矢量路径。使用函数 clipRegion() 和 clipPath() 可以获得当前剪切数据。路径或区域是否首选(更快)取决于基础 paintEngine() 。例如, QImage 绘制引擎首选路径,而 X11 绘制引擎首选区域。处理设置剪辑是在绘图的逻辑坐标中完成。
在 QPainter 剪裁之后,绘图设备也可能进行剪裁。例如,大多数窗口会剪切子窗口使用的像素,而大多数打印机会剪切掉靠近纸张边缘区域。 clipRegion() 或 hasClipping() 的返回值不会反映此附加剪切。
合成模式
QPainter 提供了 CompositionMode 枚举,该枚举定义了用于数字图像合成的 Porter-Duff 规则。它描述了一种模型,用于将一个源图像像素与另一个目标图像像素进行组合。
两种最常见的合成形式是 QPainter::CompositionMode 和 QPainter::CompositionMode 。 QPainter::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_Premultiplied , QImage::Format_RGB32 或 QImage::Format_RGB16 。任何其它格式,包括 QImage::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
和 QPainter::CompositionMode_SourceOver 。 - 使用纯色和双色线性渐变填充圆角矩形。
- 3x3修补的像素图。
此列表指示在性能至关重要的应用程序中应安全使用哪些功能。对于某些设置,其它操作可能也很快,但在广泛使用它们之前,建议在软件最终运行的系统上对它们进行基准测试和验证。在某些情况下,也可以使用昂贵的操作,例如当结果缓存在 QPixmap 中时。
See also QPaintDevice QPaintEngine Qt SVG Basic Drawing Example <qdrawutil.h>
QPainter::QPainter
QPainter() 构造一个 painter 。
QPainter::QPainter
QPainter(QPaintDevice *device) 构造一个在 device 上立即开始绘制的 painter 。
这个构造函数对于生命期短的 painters 来说很方便,例如,在 QWidget::paintEvent() 中,并且只能使用一次。构造函数为调用 begin() ,而 QPainter 析构函数自动调用 end() 。
使用此构造函数的相同示例:
由于构造函数无法在 painter 初始化失败时提供反馈,因此应该使用 begin() 和 end() 在外部设备(例如打印机)上进行绘画。
QPainter::QPainter
QPainter(const QPainter &)
QPainter::background
const QBrush & background() const 返回当前背景画刷。
See also setBackground() QPainter#Settings
QPainter::backgroundMode
Qt::BGMode backgroundMode() const 返回当前背景模式。
See also setBackgroundMode() QPainter#Settings
QPainter::begin
bool begin(QPaintDevice *device)
开始绘制_device_,如果成功返回True
,否则返回false
。
请注意,所有 painter 设置( setPen() 、 setBrush() 等)在调用时都将被重置为默认值。
可能发生严重错误的问题,例如:
请注意,大多数情况下,可以使用其中一个构造函数代替,并且会在析构时自动完成。
**Warning:**一个绘制设备一次只能由一个 painter 进行绘制。
**Warning:**不支持使用 QImage::Format_Indexed8 格式在 QImage 上进行绘制。
See also end() QPainter()
QPainter::beginNativePainting
void beginNativePainting() 刷新绘制管道,并为用户直接向基础图形上下文发出命令做好准备。必须随后调用 endNativePainting() 。
请注意,只有底层绘制引擎的状态更改才会被重置为其各自的默认状态。重置的状态可能会因版本而异。当前在 OpenGL 2 引擎中重置了以下状态:
- 混合功能已禁用
- 深度、模版和剪刀测试被禁用
- 活动纹理单位重置为0
- 深度蒙版、深度功能和清除深度将重置为其默认值
- 模板遮罩、模板操作和模板功能将重置为其默认值
- 当前颜色重置为纯白色
例如,如果用户在 beginNativePaint() / endNativePainting() 块内更改了 OpenGL 多边形模式,则不会将其重置为默认状态。 这是显示 painter 命令和原始 OpenGL 命令的混合示例:
See also endNativePainting()
QPainter::boundingRect
QRectF boundingRect(const QRectF &rectangle, int flags, const QString &text) 返回使用当前设置 font() 指定_flags_在给定_rectangle_内部绘制时显示_text_的边界矩形;即该函数告诉在给定相同参数的情况下 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::TextWordWrap
- Qt::TextIncludeTrailingSpaces
如果设置了多个水平对齐标志或垂直对齐标志,则对齐方式的结果是不确定的。
See also drawText() Qt::Alignment Qt::TextFlag
QPainter::boundingRect
QRect boundingRect(const QRect &rectangle, int flags, const QString &text) 这是一个重载函数。
返回使用当前设置 font() 指定_flags_在给定_rectangle_内部绘制时显示_text_的边界矩形。
QPainter::boundingRect
QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text) 这是一个重载函数。
返回给定_text_的边框,该边框在宽度为_w_,高度为_h_,从点(_x_,_y_)开始地矩形内绘制时显示。
QPainter::boundingRect
QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option) 这是一个重载函数。
这个重载函数不是将标志指定为 Qt::AlignmentFlag 和 Qt::TextFlag 的按位或,而是接受一个选项参数。 QTextOption 类提供常规富文本属性描述。
See also QTextOption
QPainter::brush
const QBrush & brush() const 返回当前画笔。
See also QPainter::setBrush() QPainter#Settings
QPainter::brushOrigin
QPoint brushOrigin() const 返回当前设置笔刷原点。
See also setBrushOrigin() QPainter#Settings
QPainter::clipBoundingRect
QRectF clipBoundingRect() const 如果存在剪辑,则返回当前剪辑边框。否则返回空矩形。注意,剪辑区域以逻辑坐标给出。
不能保证边界矩形是紧密的。
See also setClipRect() setClipPath() setClipRegion()
QPainter::clipPath
QPainterPath clipPath() const 以逻辑坐标返回当前剪辑路径。
**Warning:**由于 QPainter 是由底层的 QPaintEngine 处理,会根据需要重新创建路径并将其转换为当前逻辑坐标系,是不会显示存储组合剪辑,所以需要额外开销。
See also setClipPath() clipRegion() setClipping()
QPainter::clipRegion
QRegion clipRegion() const 返回当前设置剪辑区域。注意,剪辑区域以逻辑坐标给出。
**Warning:**由于 QPainter 是由底层的 QPaintEngine 处理,会根据需要重新创建路径并将其转换为当前逻辑坐标系,是不会显示存储组合剪辑,所以需要额外开销。
See also setClipRegion() clipPath() setClipping()
QPainter::combinedMatrix
QMatrix combinedMatrix() const 返回结合了当前窗口/视口和世界坐标转换的变换矩阵。
建议使用 combinedTransform() 代替此函数,以保留透视转换的属性。
See also setWorldTransform() setWindow() setViewport()
QPainter::combinedTransform
QTransform combinedTransform() const 返回结合了当前窗口/视口和世界坐标转换的变换矩阵。
See also setWorldTransform() setWindow() setViewport()
QPainter::compositionMode
QPainter::CompositionMode compositionMode() const 返回当前合成模式。
See also CompositionMode setCompositionMode()
QPainter::d_func
QPainterPrivate * d_func()
QPainter::d_func
const QPainterPrivate * d_func() const
QPainter::device
QPaintDevice * device() const
返回 painter 当前正在绘制的绘制设备,如果 painter 未处于活动状态,则返回nullptr
。
See also isActive()
QPainter::deviceMatrix
const QMatrix & deviceMatrix() const 返回从逻辑坐标转换为平台相关绘图设备的设备坐标矩阵。
**Note:**建议使用 deviceTransform() 代替此函数,以保留透视转换的属性。
only在平台相关句柄( Qt::HANDLE )上使用平台绘制命令时才需要此函数,并且平台本身不执行转换。
可以查询 QPaintEngine::PaintEngineFeature 枚举以确定平台是否执行转换。
See also worldMatrix() QPaintEngine::hasFeature()
QPainter::deviceTransform
const QTransform & deviceTransform() const 返回从逻辑坐标转换为平台相关绘图设备的设备坐标矩阵。
only在平台相关句柄( Qt::HANDLE )上使用平台绘制命令时才需要此函数,并且平台本身不执行转换。
可以查询 QPaintEngine::PaintEngineFeature 枚举以确定平台是否执行转换。
See also worldTransform() QPaintEngine::hasFeature()
QPainter::drawArc
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
void drawArc(const QRect &rectangle, int startAngle, int spanAngle) 这是一个重载函数。
绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的弧。
QPainter::drawArc
void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) 这是一个重载函数。
使用指定_width_和_height_以及给定_startAngle_和_spanAngle_绘制由从(_x_,_y_)开始地矩形定义的弧。
QPainter::drawChord
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
void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle) 这是一个重载函数。
使用指定_width_和_height_以及给定_startAngle_和_spanAngle_绘制由从(_x_,_y_)开始地矩形定义的弦。
QPainter::drawChord
void drawChord(const QRect &rectangle, int startAngle, int spanAngle) 这是一个重载函数。
绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的和弦。
QPainter::drawConvexPolygon
void drawConvexPolygon(const QPointF *points, int pointCount) 使用当前笔在阵列_points_中绘制由第一个_pointCount_点定义的凸多边形。
第一个点隐式连接到最后一个点,并且使用当前 brush() 填充多边形。如果提供的多边形不是凸的,即它至少包含一个大于180度的角,则结果是不确定的。
在某些平台(例如 X11 )上,该函数可能比 drawPolygon() 函数更快。
See also drawPolygon() drawPolyline() Coordinate System
QPainter::drawConvexPolygon
void drawConvexPolygon(const QPolygonF &polygon) 这是一个重载函数。
使用当前笔和画笔绘制由_polygon_定义的凸多边形。
QPainter::drawConvexPolygon
void drawConvexPolygon(const QPoint *points, int pointCount) 这是一个重载函数。
使用当前笔在阵列_points_中绘制由第一个_pointCount_点定义的凸多边形。
QPainter::drawConvexPolygon
void drawConvexPolygon(const QPolygon &polygon) 这是一个重载函数。
使用当前笔和画笔绘制由_polygon_定义的凸多边形。
QPainter::drawEllipse
void drawEllipse(const QRectF &rectangle) 绘制由给定_rectangle_定义的椭圆。
一个实心椭圆大小为_rectangle_. QRect::size() 。一个描边椭圆大小为_rectangle_. QRect::size() 加上画笔的宽度。
See also drawPie() Coordinate System
QPainter::drawEllipse
void drawEllipse(const QRect &rectangle) 这是一个重载函数。
绘制由给定_rectangle_定义的椭圆。
QPainter::drawEllipse
void drawEllipse(int x, int y, int width, int height) 这是一个重载函数。
以给定_width_和_height_绘制由从(_x_,_y_)开始矩形定义椭圆。
QPainter::drawEllipse
void drawEllipse(const QPointF ¢er, qreal rx, qreal ry) 这是一个重载函数。
用半径_rx_和_ry_绘制位于_center_的椭圆。
QPainter::drawEllipse
void drawEllipse(const QPoint ¢er, int rx, int ry) 这是一个重载函数。
用半径_rx_和_ry_绘制位于_center_的椭圆。
QPainter::drawGlyphRun
void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs) 在_position_绘制由_glyphs_所表示的字形。_position_给出了字形串的基线边缘。这些字形将从在_glyphs_上选择的字体以及_glyphs_中位置所给定偏移量处检索。
See also QGlyphRun::setRawFont() QGlyphRun::setPositions() QGlyphRun::setGlyphIndexes()
QPainter::drawImage
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
void drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags) 这是一个重载函数。
将给定_image_的矩形部分_source_绘制到绘制设备中的_target_矩形中。
**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。
QPainter::drawImage
void drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags) 这是一个重载函数。
绘制给定_image_的矩形部分_source_,其原点位于给定_point_。
QPainter::drawImage
void drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags) 这是一个重载函数。
绘制给定_image_的矩形部分_source_,其原点位于给定_point_。
QPainter::drawImage
void drawImage(const QRectF &rectangle, const QImage &image) 这是一个重载函数。
将给定_image_绘制到给定_rectangle_中。
**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。
QPainter::drawImage
void drawImage(const QRect &rectangle, const QImage &image) 这是一个重载函数。
将给定_image_绘制到给定_rectangle_中。
**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。
QPainter::drawImage
void drawImage(const QPointF &point, const QImage &image) 这是一个重载函数。
在给定_point_绘制给定_image_。
QPainter::drawImage
void drawImage(const QPoint &point, const QImage &image) 这是一个重载函数。
在给定_point_绘制给定_image_。
QPainter::drawImage
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
void drawLine(const QLineF &line) 绘制由_line_定义的线条。
See also drawLines() drawPolyline() Coordinate System
QPainter::drawLine
void drawLine(const QLine &line) 这是一个重载函数。
绘制由_line_定义的线条。
QPainter::drawLine
void drawLine(int x1, int y1, int x2, int y2) 这是一个重载函数。
绘制一条从(_x1_,_y1_)到(_x2_,_y2_)的直线。
QPainter::drawLine
void drawLine(const QPoint &p1, const QPoint &p2) 这是一个重载函数。
绘制一条从_p1_到_p2_的直线。
QPainter::drawLine
void drawLine(const QPointF &p1, const QPointF &p2) 这是一个重载函数。
绘制一条从_p1_到_p2_的直线。
QPainter::drawLines
void drawLines(const QLineF *lines, int lineCount) 使用当前笔在数组_lines_中绘制第一个_lineCount_行。
See also drawLine() drawPolyline()
QPainter::drawLines
void drawLines(const QVector &lines) 这是一个重载函数。
使用当前笔和画笔绘制由列表_lines_定义的线集合。
QPainter::drawLines
void drawLines(const QPointF *pointPairs, int lineCount) 这是一个重载函数。
使用当前笔在数组_pointPairs_中绘制从_lineCount_开始地行。这些线被指定为成对的点,因此_pointPairs_中条数目必须至少为_lineCount_* 2。
QPainter::drawLines
void drawLines(const QVector &pointPairs) 这是一个重载函数。
使用当前笔在矢量_pointPairs_中为每对点绘制一条线。如果数组中点数为奇数,则忽略最后一个点。
QPainter::drawLines
void drawLines(const QLine *lines, int lineCount) 这是一个重载函数。
使用当前笔在数组_lines_中绘制第一个_lineCount_行。
QPainter::drawLines
void drawLines(const QVector &lines) 这是一个重载函数。
使用当前笔和画笔绘制由列表_lines_定义的线集合。
QPainter::drawLines
void drawLines(const QPoint *pointPairs, int lineCount) 这是一个重载函数。
使用当前笔绘制数组_pointPairs_中的第一条_lineCount_线。
QPainter::drawLines
void drawLines(const QVector &pointPairs) 这是一个重载函数。
使用当前笔在矢量_pointPairs_中为每对点绘制一条线。
QPainter::drawPath
void drawPath(const QPainterPath &path) 使用当前笔绘制轮廓并使用当前笔刷填充绘制给定_path_。
See also painting/painterpaths painting/deform
QPainter::drawPicture
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
void drawPicture(int x, int y, const QPicture &picture) 这是一个重载函数。
在点(_x_,_y_)处绘制给定_picture_。
QPainter::drawPicture
void drawPicture(const QPoint &point, const QPicture &picture) 这是一个重载函数。
在给定_point_位置重新放入给定_picture_。
QPainter::drawPie
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
void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle) 这是一个重载函数。
使用指定_width_和_height_以及给定_startAngle_和_spanAngle_绘制由从(_x_,_y_)开始地矩形定义的饼图。
QPainter::drawPie
void drawPie(const QRect &rectangle, int startAngle, int spanAngle) 这是一个重载函数。
绘制由给定_rectangle_、_startAngle_和_spanAngle_定义的饼图。
QPainter::drawPixmap
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 ,则使用笔颜色“设置”的位来绘制它。如果 backgroundMode 是 Qt::OpaqueMode ,则使用背景画笔的颜色绘制“未设置”位。如果 backgroundMode 是 Qt::TransparentMode ,则“未设置”位是透明的。不支持使用渐变或纹理颜色绘制位图。
See also drawImage() QPixmap::devicePixelRatio()
QPainter::drawPixmap
void drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source) 这是一个重载函数。
将给定_pixmap_的矩形部分_source_绘制到绘制设备中的给定_target_中。
**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。
QPainter::drawPixmap
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
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
void drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source) 这是一个重载函数。
在_point_处绘制矩形_source_, source 是由_pixmap_指定的。
QPainter::drawPixmap
void drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source) 这是一个重载函数。
在_point_处绘制矩形_source_, source 是由_pixmap_指定的。
QPainter::drawPixmap
void drawPixmap(const QPointF &point, const QPixmap &pixmap) 这是一个重载函数。
在_point_处绘制_pixmap_。
QPainter::drawPixmap
void drawPixmap(const QPoint &point, const QPixmap &pixmap) 这是一个重载函数。
在_point_处绘制_pixmap_。
QPainter::drawPixmap
void drawPixmap(int x, int y, const QPixmap &pixmap) 这是一个重载函数。
在位置(_x_,_y_)处绘制给定_pixmap_。
QPainter::drawPixmap
void drawPixmap(const QRect &rectangle, const QPixmap &pixmap) 这是一个重载函数。
将_pixmap_绘制到_rectangle_中。
**Note:**如果图像和矩形大小不一致,则缩放图像以适应矩形。
QPainter::drawPixmap
void drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap) 这是一个重载函数。
在(x_,_y_)处将 pixmap 绘制到矩形中。宽度为_width ,高度为_height_ 。
QPainter::drawPixmapFragments
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
void drawPoint(const QPointF &position) 使用当前笔的颜色在给定_position_绘制单个点。
See also Coordinate System
QPainter::drawPoint
void drawPoint(const QPoint &position) 这是一个重载函数。
使用当前笔的颜色在给定_position_绘制单个点。
QPainter::drawPoint
void drawPoint(int x, int y) 这是一个重载函数。
在位置(_x_,_y_)处绘制单个点。
QPainter::drawPoints
void drawPoints(const QPointF *points, int pointCount) 使用当前笔的颜色绘制数组_points_中的第一个_pointCount_点。
See also Coordinate System
QPainter::drawPoints
void drawPoints(const QPolygonF &points) 这是一个重载函数。
绘制矢量_points_中的点。
QPainter::drawPoints
void drawPoints(const QPoint *points, int pointCount) 这是一个重载函数。
使用当前笔的颜色绘制数组_points_中的第一个_pointCount_点。
QPainter::drawPoints
void drawPoints(const QPolygon &points) 这是一个重载函数。
绘制矢量_points_中的点。
QPainter::drawPolygon
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
void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule) 这是一个重载函数。
根据给定_points_和填充_fillRule_绘制多边形。
QPainter::drawPolygon
void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule) 这是一个重载函数。
绘制数组_points_中前_pointCount_个点定义的多边形。
QPainter::drawPolygon
void drawPolygon(const QPolygon &points, Qt::FillRule fillRule) 这是一个重载函数。
根据给定_points_和填充_fillRule_绘制多边形。
QPainter::drawPolyline
void drawPolyline(const QPointF *points, int pointCount) 使用当前画笔绘制_points_中前_pointCount_个点定义的折线。
请注意,与 drawPolygon() 函数不同,最后一个点不连接到第一个点,也不填充折线。
See also drawLines() drawPolygon() Coordinate System
QPainter::drawPolyline
void drawPolyline(const QPolygonF &points) 这是一个重载函数。
使用当前画笔绘制由给定_points_定义的折线。
QPainter::drawPolyline
void drawPolyline(const QPoint *points, int pointCount) 这是一个重载函数。
使用当前画笔绘制_points_中前_pointCount_个点定义的折线。
QPainter::drawPolyline
void drawPolyline(const QPolygon &points) 这是一个重载函数。
使用当前画笔绘制由给定_points_定义的折线。
QPainter::drawRect
void drawRect(const QRectF &rectangle) 使用当前画笔和画刷绘制当前_rectangle_。
填充矩形大小为_rectangle_.size()。描边矩形大小为_rectangle_.size()加上笔的宽度。
See also drawRects() drawPolygon() Coordinate System
QPainter::drawRect
void drawRect(int x, int y, int width, int height) 这是一个重载函数。
在左上角(_x_,_y_) 处绘制一个矩形,使用指定宽度_width_和高度_height_。
QPainter::drawRect
void drawRect(const QRect &rectangle) 这是一个重载函数。
使用当前画笔和画刷绘制当前_rectangle_。
QPainter::drawRects
void drawRects(const QRectF *rectangles, int rectCount) 使用当前画笔和画刷绘制_rectangles_前_rectCount_个矩形。
See also drawRect()
QPainter::drawRects
void drawRects(const QVector &rectangles) 这是一个重载函数。
使用当前笔和画笔绘制给定_rectangles_。
QPainter::drawRects
void drawRects(const QRect *rectangles, int rectCount) 这是一个重载函数。
使用当前画笔和画刷绘制由_rectangles_出给前_rectCount_个矩形。
QPainter::drawRects
void drawRects(const QVector &rectangles) 这是一个重载函数。
使用当前笔和画笔绘制给定_rectangles_。
QPainter::drawRoundRect
void drawRoundRect(const QRectF &r, int xRnd, int yRnd) 绘制一个带有圆角的矩形_r_。
_xRnd_和_yRnd_参数为指定角的圆度。0表示角度,99是最大圆度。
填充矩形大小为 r.size() 。描边矩形大小为 r.size() 加上笔的宽度。
See also drawRoundedRect()
QPainter::drawRoundRect
void drawRoundRect(int x, int y, int w, int h, int , int ) 这是一个重载函数。
绘制以_x_,y_为坐标,宽为_w,高为_h_圆角矩形。
QPainter::drawRoundRect
void drawRoundRect(const QRect &r, int xRnd, int yRnd) 这是一个重载函数。
绘制一个带有圆角的矩形_r_。
QPainter::drawRoundedRect
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
void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode) 这是一个重载函数。
绘制以_x_,_y_为坐标,宽为_w_,高为_h_圆角矩形。
QPainter::drawRoundedRect
void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode) 这是一个重载函数。
绘制给定_rect_圆角矩形。
QPainter::drawStaticText
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
void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText) 这是一个重载函数。
在_topLeftPosition_处绘制给定_staticText_文本。
Note: y 轴位置被用作字体顶部。
QPainter::drawStaticText
void drawStaticText(int left, int top, const QStaticText &staticText) 这是一个重载函数。
在坐标_left_和_top_绘制_staticText_ 。
Note: y 轴位置被用作字体顶部。
QPainter::drawText
void drawText(const QPointF &position, const QString &text) 从给定_position_开始,以当前定义的文本方向绘制给定_text_。
这个函数不处理换行符(\n),因为它不能将文本分成多行,也不能显示换行符。如果希望使用换行符绘制多行文本,或者希望对文本进行换行,则需要对矩形进行重载。
默认情况下, QPainter 绘制的文本是反锯齿的。
Note: y 轴位置是字体的基线。
QPainter::drawText
void drawText(const QPoint &position, const QString &text) 这是一个重载函数。
从给定_position_开始,以当前定义的文本方向绘制给定_text_。
默认情况下, QPainter 绘制的文本是反锯齿的。
Note: y 轴位置是字体的基线。
QPainter::drawText
void drawText(int x, int y, const QString &text) 这是一个重载函数。
使用画家当前定义的文本方向,在位置(_x_,_y_)绘制给定_text_。
默认情况下, QPainter 绘制的文本是反锯齿的。
Note: y 轴位置是字体的基线。
QPainter::drawText
void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect) 这是一个重载函数。
在提供的_rectangle_内绘制给定_text_,带有对齐标志的矩形定义了文本的锚点。
boundingRect_(如果不是 null )被设置为包围整个文本边框。如下图所示,虚线表示函数计算的_boundingRect_,虚线表示_rectangle:
参数是一个按位运算,或以下标志:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextDontClip
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
默认情况下, QPainter 绘制的文本是反锯齿的。
Note:_rectangle_的 y 坐标为字体顶部。
See also Qt::AlignmentFlag Qt::TextFlag boundingRect() layoutDirection()
QPainter::drawText
void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect) 这是一个重载函数。
根据指定_flags_在提供的_rectangle_内绘制给定_text_。
boundingRect_(如果不是 null )被设置为包围整个文本边框应该是什么。如下图所示,虚线表示函数计算的_boundingRect_,虚线表示_rectangle:
默认情况下, QPainter 绘制的文本是反锯齿的。
Note:_rectangle_的 y 坐标为字体顶部。
QPainter::drawText
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_定义的矩形:
参数是一个按位运算,或以下标志:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
默认情况下, QPainter 绘制的文本是反锯齿的。
Note: y 轴位置被用作字体顶部。
See also Qt::AlignmentFlag Qt::TextFlag setFont() setPen()
QPainter::drawText
void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option) 这是一个重载函数。
在指定的_rectangle_中绘制给定_text_,使用_option_以控制其位置、方位和方向。_option_中给出的选项会覆盖 QPainter 的设置。
默认情况下, QPainter 绘制的文本是反锯齿的。
Note:_rectangle_的 y 坐标为字体顶部。
QPainter::drawText
void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding)
QPainter::drawTextItem
void drawTextItem(const QPointF &p, const QTextItem &ti)
QPainter::drawTextItem
void drawTextItem(int x, int y, const QTextItem &ti)
QPainter::drawTextItem
void drawTextItem(const QPoint &p, const QTextItem &ti)
QPainter::drawTiledPixmap
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
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
void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position) 这是一个重载函数。
在原点位于_position_的矩形_rectangle_内,绘制平铺的_pixmap_。
QPainter::end
bool end() 绘画结束。绘制时使用的任何资源都将被释放。通常不需要调用它,因为它是由析构函数调用的。
如果绘制器不再处于活动状态返回True
;否则返回false
。
See also begin() isActive()
QPainter::endNativePainting
void endNativePainting() 手动发出本机绘制命令后重启 painter 。在调用任何绘制命令之前,允许 painter 恢复它所依赖的任何本机状态。
See also beginNativePainting()
QPainter::eraseRect
void eraseRect(const QRectF &rectangle) 擦掉给定矩形内的_rectangle_。相当于调用
See also fillRect()
QPainter::eraseRect
void eraseRect(int x, int y, int width, int height) 这是一个重载函数。
擦除矩形内,以(x, _y_)为顶点的一片区域,这片区域的宽度和高度分别为_width_和_height_。
QPainter::eraseRect
void eraseRect(const QRect &rectangle) 这是一个重载函数。
擦掉给定矩形内的_rectangle_。
QPainter::fillPath
void fillPath(const QPainterPath &path, const QBrush &brush) 使用给定_brush_填充给定_path_。轮廓不画出来。
或者,可以指定一个 QColor 代替 QBrush ; QBrush 构造函数(接受 QColor 参数)将自动创建一个实体模式笔刷。
See also drawPath()
QPainter::fillRect
void fillRect(const QRectF &rectangle, const QBrush &brush) 用指定_brush_填充给定_rectangle_。
或者,可以指定一个 QColor 代替 QBrush ; QBrush 构造函数(接受 QColor 参数)将自动创建一个实体模式笔刷。
See also drawRect()
QPainter::fillRect
void fillRect(int x, int y, int width, int height, const QBrush &brush) 这是一个重载函数。
使用给定_brush_,填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。
QPainter::fillRect
void fillRect(const QRect &rectangle, const QBrush &brush) 这是一个重载函数。
用指定_brush_填充给定_rectangle_。
QPainter::fillRect
void fillRect(const QRectF &rectangle, const QColor &color) 这是一个重载函数。
用指定_color_填充给定_rectangle_。
QPainter::fillRect
void fillRect(int x, int y, int width, int height, const QColor &color) 这是一个重载函数。
使用给定_color_,填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。
QPainter::fillRect
void fillRect(const QRect &rectangle, const QColor &color) 这是一个重载函数。
用指定_color_填充给定_rectangle_。
QPainter::fillRect
void fillRect(int x, int y, int width, int height, Qt::GlobalColor color) 这是一个重载函数。
使用给定_color_,填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。
QPainter::fillRect
void fillRect(const QRect &rectangle, Qt::GlobalColor color) 这是一个重载函数。
用指定_color_填充给定_rectangle_。
QPainter::fillRect
void fillRect(const QRectF &rectangle, Qt::GlobalColor color) 这是一个重载函数。
用指定_color_填充给定_rectangle_。
QPainter::fillRect
void fillRect(int x, int y, int width, int height, Qt::BrushStyle style) 这是一个重载函数。
使用指定笔刷_style_,用给定_width_和_height_填充从(_x_,_y_)坐标开始地矩形。
QPainter::fillRect
void fillRect(const QRect &rectangle, Qt::BrushStyle style) 这是一个重载函数。
用指定笔刷_style_填充给定_rectangle_。
QPainter::fillRect
void fillRect(const QRectF &rectangle, Qt::BrushStyle style) 这是一个重载函数。
用指定笔刷_style_填充给定_rectangle_。
QPainter::fillRect
void fillRect(int x, int y, int width, int height, QGradient::Preset preset) 这是一个重载函数。
用指定_preset_填充从(_x_,_y_)开始地矩形。矩形的宽度和高度分别为_width_和_height_。
QPainter::fillRect
void fillRect(const QRect &rectangle, QGradient::Preset preset) 这是一个重载函数。
用指定_preset_填充给定_rectangle_。
QPainter::fillRect
void fillRect(const QRectF &rectangle, QGradient::Preset preset) 这是一个重载函数。
用指定_preset_填充给定_rectangle_。
QPainter::font
const QFont & font() const 返回当前用于设置绘制文本的字体。
See also setFont() drawText() QPainter#Settings
QPainter::fontInfo
QFontInfo fontInfo() const 如果绘制器处于活动状态,返回绘制器字体信息。否则,返回值为未定义的。
See also font() isActive() QPainter#Settings
QPainter::fontMetrics
QFontMetrics fontMetrics() const 如果绘制器处于活动状态,则返回绘制器字体规格。否则,返回值为未定义的。
See also font() isActive() QPainter#Settings
QPainter::hasClipping
bool hasClipping() const
如果设置了剪切,返回True
;否则返回false
。
See also setClipping() QPainter#Clipping
QPainter::initFrom
void initFrom(const QPaintDevice *device) 使用_device_给定数据来初始化画笔、背景和字体。
See also begin() QPainter#Settings
QPainter::isActive
bool isActive() const
如果 begin() 已经被调用且 end() 还没有被调用,返回True
;否则返回false
。
See also begin() QPaintDevice::paintingActive()
QPainter::layoutDirection
Qt::LayoutDirection layoutDirection() const 返回绘制器绘制文本时使用的布局方向。
See also QTextOption::textDirection() setLayoutDirection() drawText() QPainter#Settings
QPainter::matrix
const QMatrix & matrix() const 使用 worldTransform() 代替。
See also setMatrix() worldTransform()
QPainter::matrixEnabled
bool matrixEnabled() const 使用 worldMatrixEnabled() 代替。
See also setMatrixEnabled() worldMatrixEnabled()
QPainter::opacity
qreal opacity() const 返回绘制器不透明度。缺省值为1。
See also setOpacity()
QPainter::operator=
QPainter & operator=(const QPainter &)
QPainter::paintEngine
QPaintEngine * paintEngine() const 如果绘制器处于活动状态,则返回绘制器当前正在操作的绘制引擎;否则返回0。
See also isActive()
QPainter::pen
const QPen & pen() const 返回 painter's 当前笔。
See also setPen() QPainter#Settings
QPainter::qt_check_for_QGADGET_macro
void qt_check_for_QGADGET_macro()
QPainter::qt_static_metacall
void qt_static_metacall(QObject *, QMetaObject::Call , int , void **)
QPainter::redirected
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
QPainter::RenderHints renderHints() const 返回一个标志,指定为该绘制器设置渲染提示。
See also setRenderHints() testRenderHint() QPainter#Rendering Quality
QPainter::resetMatrix
void resetMatrix() 重置使用 translate() , scale() , shear() , rotate() , setWorldMatrix() , setViewport() 和 setWindow() 所做的任何转换。
建议使用 resetTransform() 而不是这个函数来保存透视图转换的属性。
See also QPainter#Coordinate Transformations
QPainter::resetTransform
void resetTransform() 重置使用 translate() , scale() , shear() , rotate() , setWorldTransform() , setViewport() 和 setWindow() 所做的任何转换。
See also Coordinate Transformations
QPainter::restore
void restore() 恢复当前 painter 状态(从堆栈中弹出保存的状态)。
See also save()
QPainter::restoreRedirected
void restoreRedirected(const QPaintDevice *device) 使用 QWidget::render() 会取消这个函数的使用。
调用 setRedirected() 后,为给定_device_恢复先前的重定向。
**Warning:**在 QPainter API 中使用重定向意味着 QPainter::begin() 和 QPaintDevice 的析构函数需要保留一小段时间的互斥。 这将会影响性能,因此强烈建议使用 QWidget::render 。
See also redirected()
QPainter::rotate
void rotate(qreal angle) 顺时针旋转坐标系统。给定_angle_参数是以度为单位的。
See also setWorldTransform() QPainter#Coordinate Transformations
QPainter::save
void save() 保存当前绘制状态(将状态压入堆栈)。A后面必须跟一个相应的 restore() ; end() 函数的作用是:展开栈。
See also restore()
QPainter::scale
void scale(qreal sx, qreal sy) 将坐标系统按(sx_,_sy )缩放。
See also setWorldTransform() QPainter#Coordinate Transformations
QPainter::setBackground
void setBackground(const QBrush &brush) 将画笔的背景画笔设置为给定_brush_。
背景笔刷是在绘制不透明文本、点画线和位图时填充的笔刷。背景笔刷在透明背景模式下没有效果(这是默认模式)。
See also background() setBackgroundMode() QPainter#Settings
QPainter::setBackgroundMode
void setBackgroundMode(Qt::BGMode mode) 设置 painter 的背景模式为给定。
Qt::TransparentMode (默认模式)在不设置背景像素的情况下绘制点画线和文本。 Qt::OpaqueMode 用当前背景颜色填充这些空间。
注意,如果绘制透明的位图或像素图,必须使用 QPixmap::setMask() 。
See also backgroundMode() setBackground() QPainter#Settings
QPainter::setBrush
void setBrush(const QBrush &brush) 将 painter's 画笔设置为给定_brush_。
painter's 画笔定义了如何填充形状。
See also brush() QPainter#Settings
QPainter::setBrush
void setBrush(Qt::BrushStyle style) 这是一个重载函数。
设置 painter's 画笔为黑色和指定_style_。
QPainter::setBrushOrigin
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
void setBrushOrigin(int x, int y) 这是一个重载函数。
设置画笔的原点为点(x,y)。
QPainter::setBrushOrigin
void setBrushOrigin(const QPoint &position) 这是一个重载函数。
设置画笔的原点到给定_position_。
QPainter::setClipPath
void setClipPath(const QPainterPath &path, Qt::ClipOperation operation) 启用剪辑,设置绘制器剪辑路径设置为_path_,并设置_operation_。
请注意,剪辑路径是在逻辑(painter)坐标中指定的。
See also clipPath() clipRegion() QPainter#Clipping
QPainter::setClipRect
void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation) 启用剪辑,设置剪辑区域为_rectangle_,使用指定_operation_操作。默认操作是替换当前剪辑矩形。
请注意,剪辑矩形是在逻辑(painter)坐标中指定的。
See also clipRegion() setClipping() QPainter#Clipping
QPainter::setClipRect
void setClipRect(const QRect &rectangle, Qt::ClipOperation operation) 这是一个重载函数。
启用剪辑,设置剪辑区域为_rectangle_,使用指定_operation_操作。
QPainter::setClipRect
void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation) 启用剪辑,设置剪辑区域为矩形,矩形原点为(_x_,_y_), 宽度和高度分别为_width_和_height_。
QPainter::setClipRegion
void setClipRegion(const QRegion ®ion, Qt::ClipOperation operation) 设置剪辑区域为_region_, 使用指定动作_operation_。默认剪裁操作是替换当前剪裁区域。
注意剪辑区域是以逻辑坐标给出的。
See also clipRegion() setClipRect() QPainter#Clipping
QPainter::setClipping
void setClipping(bool enable) 如果_enable_为 True 则启用剪裁,如果_enable_为 false 则禁用剪裁。
See also hasClipping() QPainter#Clipping
QPainter::setCompositionMode
void setCompositionMode(QPainter::CompositionMode mode) 将组合模式设置为给定_mode_。
**Warning:**只有运行在 QImage 上的 QPainter 完全支持所有的组合模式。如 compositionMode() 所述,X11 支持 RasterOp 模式。
See also compositionMode()
QPainter::setFont
void setFont(const QFont &font) 设置 painter's 字体为给定_font_。
该字体被后续的 drawText() 函数中使用。文字颜色于所设置笔颜色相同。
如果设置了一个不可用的字体,Qt 会找到一个接近的匹配。 font() 将返回使用的设置,而将返回实际使用的字体(可能是相同的)。
See also font() drawText() QPainter#Settings
QPainter::setLayoutDirection
void setLayoutDirection(Qt::LayoutDirection direction) 设置 painter 绘制文本时使用的布局方向为指定的_direction_。
默认值是 Qt::LayoutDirectionAuto ,它将隐式地根据绘制的文本确定方向。
See also QTextOption::setTextDirection() layoutDirection() drawText() QPainter#Settings
QPainter::setMatrix
void setMatrix(const QMatrix &matrix, bool combine) 使用 setWorldTransform() 代替。
See also matrix() setWorldTransform()
QPainter::setMatrixEnabled
void setMatrixEnabled(bool enable) 使用 setWorldMatrixEnabled() 代替。
See also matrixEnabled() setWorldMatrixEnabled()
QPainter::setOpacity
void setOpacity(qreal opacity) 将 painter 的不透明度设置为_opacity_。 该值应在0.0到1.0的范围内,其中0.0是完全透明的,而1.0是完全不透明的。
在 painter 上设置不透明度将单独应用于所有绘图操作。
See also opacity()
QPainter::setPen
void setPen(const QPen &pen) 将画家的笔设置为给定_pen_。
_pen_定义了绘制线条和轮廓的方式,还定义了文字颜色。
See also pen() QPainter#Settings
QPainter::setPen
void setPen(const QColor &color) 这是一个重载函数。
将 painter's 笔设置为 Qt::SolidLine 样式,宽度1和指定_color_。
QPainter::setPen
void setPen(Qt::PenStyle style) 这是一个重载函数。
将 painter's 笔设置为给定_style_,宽度1和黑色。
QPainter::setRedirected
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
void setRenderHint(QPainter::RenderHint hint, bool on) 如果_on_为 True,在 painter 上设置给定渲染_hint_;否则清除渲染提示。
See also setRenderHints() renderHints() QPainter#Rendering Quality
QPainter::setRenderHints
void setRenderHints(QPainter::RenderHints hints, bool on) 如果_on_为 True,在 painter 上设置给定渲染_hints_;否则清除渲染提示。
See also setRenderHint() renderHints() QPainter#Rendering Quality
QPainter::setTransform
void setTransform(const QTransform &transform, bool combine) 设置世界坐标转换矩阵。如果_combine_为真,则指定的_transform_与当前矩阵结合;否则,它将替换当前矩阵。
See also transform() setWorldTransform()
QPainter::setViewTransformEnabled
void setViewTransformEnabled(bool enable) 如果_enable_为 True 则启用视图转换,如果_enable_为 false 则禁用视图转换。
See also viewTransformEnabled() Coordinate System#Window-Viewport Conversion
QPainter::setViewport
void setViewport(const QRect &rectangle) 将 painter's 视口矩形设置为给定_rectangle_,并启用视图转换。
视口矩形是视图转换的一部分。视口指定设备坐标系统。它的姊妹函数 window() 指定逻辑坐标系统。
默认视口矩形与设备的矩形相同。
See also viewport() viewTransformEnabled() Coordinate System#Window-Viewport Conversion
QPainter::setViewport
void setViewport(int x, int y, int width, int height) 这是一个重载函数。
设置painter's 窗口小部件为从(_x_, _y_)坐标开始并给定_width_和_height_的矩形。
QPainter::setWindow
void setWindow(const QRect &rectangle) 将 painter's 窗口小部件设置为给定_rectangle_,并启用视图转换。
窗口矩形是视图转换的一部分。窗口指定逻辑坐标系统。它的姊妹函数 viewport() 指定设备坐标系统。
默认窗口矩形与设备的矩形相同。
See also window() viewTransformEnabled() Coordinate System#Window-Viewport Conversion
QPainter::setWindow
void setWindow(int x, int y, int width, int height) 这是一个重载函数。
设置 painter's 窗口小部件为从(_x_,_y_)坐标开始并给定_width_和_height_的矩形。
QPainter::setWorldMatrix
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
void setWorldMatrixEnabled(bool enable) 如果_enable_为 True 则启用转换,如果_enable_为 false 则禁用转换。世界坐标转换矩阵没有改变。
See also worldMatrixEnabled() worldTransform() QPainter#Coordinate Transformations
QPainter::setWorldTransform
void setWorldTransform(const QTransform &matrix, bool combine) 设置世界坐标转换矩阵。如果_combine_为真,则指定_matrix_与当前矩阵结合; 否则,它将替换当前矩阵。
See also worldTransform() transform() setTransform()
QPainter::shear
void shear(qreal sh, qreal sv) 在(_sh_,_sv_)位置剪切坐标系。
See also setWorldTransform() QPainter#Coordinate Transformations
QPainter::strokePath
void strokePath(const QPainterPath &path, const QPen &pen) 使用指定_pen_绘制_path_的轮廓(笔画)。
See also fillPath() QPainter#Drawing
QPainter::testRenderHint
bool testRenderHint(QPainter::RenderHint hint) const
如果设置了_hint_,则返回True
;否则返回false
。
See also renderHints() setRenderHint()
QPainter::transform
const QTransform & transform() const worldTransform() 的别名。返回世界坐标转换矩阵。
See also setTransform() worldTransform()
QPainter::translate
void translate(const QPointF &offset) 根据给定_offset_转换坐标系统;即给定_offset_被添加到点上。
See also setWorldTransform() QPainter#Coordinate Transformations
QPainter::translate
void translate(const QPoint &offset) 这是一个重载函数。
根据给定_offset_转换坐标系统。
QPainter::translate
void translate(qreal dx, qreal dy) 这是一个重载函数。
用向量(dx, dy)来平移坐标系。
QPainter::viewTransformEnabled
bool viewTransformEnabled() const
如果视图转换已启用,则返回True
;否则返回 false。
See also setViewTransformEnabled() worldTransform()
QPainter::viewport
QRect viewport() const 返回视口矩形。
See also setViewport() setViewTransformEnabled()
QPainter::window
QRect window() const 返回窗口矩形。
See also setWindow() setViewTransformEnabled()
QPainter::worldMatrix
const QMatrix & worldMatrix() const 返回世界坐标转换矩阵。
由于它不保留透视图转换的属性,因此建议使用 worldTransform() 。
See also setWorldMatrix() QPainter#Coordinate Transformations Coordinate System
QPainter::worldMatrixEnabled
bool worldMatrixEnabled() const
如果启用了世界坐标转换,则返回True
;否则返回 false 。
See also setWorldMatrixEnabled() worldTransform() Coordinate System
QPainter::worldTransform
const QTransform & worldTransform() const 返回世界坐标转换矩阵。
See also setWorldTransform()
QPainter::~QPainter
~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
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 通过 QPrinter 或 QPdfWriter 输出 PDF 文件时触发,其中 drawImage() / drawPixmap() 调用将使用无损压缩算法而不是有损 JPEG 压缩对图像进行编码。该值是在 QT 5.13 中添加。 |
See also renderHints() setRenderHint() QPainter#Rendering Quality Concentric Circles Example