文章目录
QPainter类
https://doc.qt.io/qt-5/qpainter.html
QPainter类在小部件和其他绘画设备上执行低级绘画。
Header | #include < QPainter > |
---|---|
qmake | QT += gui |
Inherited By | QStylePainter |
详述
QPainter提供了高度优化的功能,可以完成大多数图形GUI程序所需的功能。 它可以绘制从简单的线条到复杂的形状( 如饼图和弦)的所有内容。 它还可以绘制对齐的文本和像素图。 通常,它绘制“自然”坐标系,但也可以进行视图和世界变换。 QPainter可以对继承QPaintDevice类的任何对象进行操作。
QPainter的常见用法是在小部件的paint事件内:构建和自定义( 例如,设置笔或画笔)painter。 然后绘制。 记住在绘制后销毁QPainter对象。 例如:
void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect( ), Qt::AlignCenter, "Qt");
}
QPainter的核心功能是绘图,但是该类还提供了几个功能,可让您自定义QPainter的设置及其呈现质量,以及其他一些可进行裁剪的功能。此外,您可以通过指定混合模式来控制将几个不同的形状合并在一起。
函数isActive( )指示绘画者是否处于活动状态。 Painter由begin( )函数和采用QPaintDevice参数的构造函数激活。 end( )函数和析构函数将其停用。
QPainter、QPaintDevice和QPaintEngine类一起构成Qt绘画系统的基础。 QPainter是用于执行绘图操作的类。 QPaintDevice表示可以使用QPainter进行绘制的设备。 QPaintEngine提供了画家用来在不同类型的设备上绘制的界面。如果画家是活动的,则device( )返回画家在其上进行绘画的画家设备,而paintEngine( )返回画家当前正在对其进行操作的画家引擎。有关更多信息,请参见绘画系统。
有时,希望有人在不常见的QPaintDevice上绘画。 QPainter支持一个静态函数setRedirected( )obsolete。
警告:当paintdevice是窗口小部件时,QPainter只能在paintEvent( )函数内部或paintEvent( )调用的函数中使用。
Settings
您可以根据自己的喜好定制一些设置来进行QPainter绘制:
-
font( )是用于绘制文本的字体。如果画家是isActive( ),则可以分别使用fontInfo( )和fontMetrics( )函数检索有关当前设置的字体及其度量的信息。
-
brush( )定义用于填充形状的颜色或图案。
-
pen( )定义用于绘制线条或边界的颜色或点画。
-
backgroundMode( )定义是否有background( ),即Qt :: OpaqueMode或Qt :: TransparentMode。
-
仅当backgroundMode( )为Qt :: OpaqueMode并且pen( )为点画时,background( )才适用。在这种情况下,它描述点画中背景像素的颜色。
-
brushOrigin( )定义平铺画笔的原点,通常是小部件背景的原点。
-
viewport( ),window( ),worldTransform( )组成了画家的坐标转换系统。有关更多信息,请参见“坐标转换”部分和“坐标系统”文档。
-
hasClipping( )告诉画家是否完全剪辑。 ( 绘制设备也会剪辑。)如果绘制器剪辑,它将剪辑到clipRegion( )。
-
layoutDirection( )定义画家在绘制文本时使用的布局方向。
-
worldMatrixEnabled( )告知是否启用了世界转换。
-
viewTransformEnabled( )告知是否启用了视图转换。
请注意,其中一些设置会反映某些绘图设备中的设置,例如 QWidget :: font( )。 QPainter :: begin( )函数( 或等效的QPainter构造函数)从绘画设备复制这些属性。
您可以随时通过调用save( )函数保存QPainter的状态,该函数将所有可用设置保存在内部堆栈中。 restore( )函数将其弹出。
Drawing
QPainter提供了绘制大多数图元的函数:drawPoint(),drawPoints(),drawLine(),drawRect(),drawRoundedRect( ),drawEllipse( ),drawArc( ),drawPie( ),drawChord( ),drawPolyline( ),drawPolygon( ),drawConvexPolygon( )和drawCubicBezier( )。 两个便捷函数drawRects( )和drawLines( )使用当前的笔和画笔在QRects或QLines的给定数组中绘制给定数量的矩形或直线。
QPainter类还提供了用给定的QBrush填充给定的QRect的fillRect( )函数,以及擦除给定的矩形内部区域的deleteRect( )函数。
所有这些函数都具有整数和浮点版本。
- Basic Drawing Example
基本绘图示例显示了如何使用QPainter类显示各种样式的基本图形基元。
如果需要绘制复杂的形状,尤其是需要重复绘制,请考虑创建QPainterPath并使用drawPath( )进行绘制。
-
Painter Paths example
QPainterPath类提供了用于绘画操作的容器,从而可以构造和重用图形形状。
Painter Paths example显示了如何使用Painter路径构建复杂的形状以进行渲染。
QPainter还提供了使用给定的QBrush填充给定的QPainterPath的fillPath( )函数和绘制给定路径的轮廓( 即描画路径)的strokePath( )函数。
另请参见“矢量变形”示例,该示例显示如何使用高级矢量技术使用QPainterPath绘制文本,“渐变”示例显示Qt中可用的不同类型的渐变,以及“路径描边”示例,其显示Qt的内置破折号 并展示了如何使用自定义模式扩展可用模式的范围。
Vector Deformation | Gradients | Path Stroking |
---|---|---|
![]() | ![]() | ![]() |
绘制Pixmaps和Images
有绘制pixmaps /图像的函数,即drawPixmap( ),drawImage( )和drawTiledPixmap( )。 drawPixmap( )和drawImage( )都产生相同的结果,不同之处在于drawPixmap( )在屏幕上更快,而drawImage( )在QPrinter或其他设备上可能更快。
有一个drawPicture( )函数可绘制整个QPicture的内容。 drawPicture( )函数是唯一一个忽略画家所有设置的函数,因为QPicture具有自己的设置。
绘制高分辨率的Pixmaps和Images
高分辨率版本的像素图具有大于1的设备像素比率值( 请参见QImageReader,QPixmap :: devicePixelRatio( ))。 如果它与基础QPaintDevice的值匹配,则将其直接绘制到设备上,而无需应用其他转换。
例如,在设备像素比率为2的高DPI屏幕上绘制设备像素比率为2的64x64像素大小的QPixmap时,就是这种情况。请注意,像素映射实际上在用户空间中为32x32像素。 Qt中基于像素图大小计算布局几何形状的代码路径将使用此大小。 这样做的最终效果是,像素图显示为高DPI像素图,而不是较大的像素图。
渲染质量
要使用QPainter获得最佳渲染效果,应使用独立于平台的QImage作为绘制设备。 即使用QImage将确保结果在任何平台上都具有相同的像素表示。
QPainter类还提供了一种通过其RenderHint枚举和对浮点精度的支持来控制渲染质量的方法:所有用于绘制图元的函数都具有浮点版本。 这些通常与QPainter :: Antialiasing渲染提示结合使用。
“同心圆”示例显示了改进的渲染质量,可以在绘制自定义小部件时使用浮点精度和抗锯齿来获得。
该应用程序的主窗口显示了几个小部件,这些小部件是使用精度和抗锯齿的各种组合绘制的。
RenderHint枚举指定QPainter的标志,任何给定的引擎可能会或不会遵守这些标志。
- QPainter :: Antialiasing指示引擎应尽可能对图元的边缘进行抗锯齿,
- QPainter :: TextAntialiasing指示引擎应尽可能对文本进行抗锯齿
- QPainter :: SmoothPixmapTransform指示引擎应使用平滑的像素映射转换算法。
renderHints( )函数返回一个标志,该标志指定为此画家设置的渲染提示。 使用setRenderHint( )函数设置或清除当前设置的RenderHints。
坐标转换
通常,QPainter在设备自身的坐标系( 通常为像素)上运行,但是QPainter对坐标转换有很好的支持。
nop | rotate() | scale() | translate() |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
最常用的转换是缩放,旋转,平移和剪切。 使用scale( )函数将坐标系缩放给定的偏移量,然后使用rotate( )函数顺时针旋转它,并使用translate( )进行平移( 即在点上添加给定的偏移量)。 您也可以使用shear( )函数围绕原点扭曲坐标系。 有关剪切坐标系的可视化效果,请参见仿射变换示例。
另请参见“转换”示例,该示例显示了转换如何影响QPainter渲染图形基元的方式。 特别是,它显示了转换顺序如何影响结果。
仿射变换示例
仿射变换示例显示了Qt对绘画操作执行仿射变换的能力。 该演示还允许用户尝试转换操作并立即查看结果。
所有转换操作都在转换worldTransform( )上进行。矩阵将平面中的一个点转换为另一个点。有关变换矩阵的更多信息,请参见坐标系和QTransform文档。
setWorldTransform( )函数可以替换或添加到当前设置的worldTransform( )中。 resetTransform( )函数将重置使用translate( ),scale( ),shear( ),rotate( ),setWorldTransform( ),setViewport( )和setWindow( )函数进行的所有转换。 deviceTransform( )返回矩阵,该矩阵从逻辑坐标转换为与平台相关的绘制设备的设备坐标。仅当在依赖于平台的句柄上使用平台绘制命令时才需要后者的功能,并且平台不会自然地进行转换。
使用QPainter进行绘制时,我们使用逻辑坐标指定点,然后将其转换为绘画设备的物理坐标。逻辑坐标到物理坐标的映射由QPainter的CombinedTransform( )( viewport( )和window( )与worldTransform( )的组合)处理。 viewport( )表示指定任意矩形的物理坐标,window( )在逻辑坐标中描述相同的矩形,并且worldTransform( )与变换矩阵相同。
另请参见坐标系 Coordinate System
剪切
QPainter可以将任何绘制操作剪切到矩形,区域或矢量路径。 使用功能clipRegion( )和clipPath( )可获取当前剪辑。 首选路径还是区域( 更快)取决于基础paintEngine( )。 例如,QImage绘制引擎更喜欢路径,而X11绘制引擎更喜欢区域。 设置剪辑是在画家的逻辑坐标中完成的。
QPainter剪切后,绘画设备也可能会剪切。 例如,大多数窗口小部件会剪掉子窗口小部件使用的像素,并且大多数打印机会剪掉纸张边缘附近的区域。 clipRegion( )或hasClipping( )的返回值不反映此额外的裁剪。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzilpmOD-1664258731403)(images/20201208172353.png)]
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QRect rect = this->rect();
rect = rect.adjusted(width()/4,height()/4,-width()/4,-height()/4);
painter.fillRect(this->rect(),Qt::red); // 填充全部区域
painter.setClipRect(rect); // 设置剪切区域
painter.fillRect(this->rect(),Qt::green); // 填充剪切区域
}
组合方式
QPainter提供了CompositionMode枚举,该枚举定义了用于数字图像合成的Porter-Duff规则; 它描述了一种模型,用于将一个图像( 源)中的像素与另一图像( 目标)中的像素进行组合。
两种最常见的组合形式是Source和SourceOver。 Source用于将不透明的对象绘制到绘制设备上。 在此模式下,源中的每个像素替换目标中的相应像素。 在SourceOver合成模式下,源对象是透明的,并绘制在目标的顶部。
请注意,构图变换按像素进行操作。 因此,使用图形图元本身及其边界矩形之间是有区别的:边界矩形包含alpha == 0的像素( 即图元周围的像素)。 这些像素将覆盖其他图像的像素,从而有效地清除这些像素,而图元仅覆盖其自身的区域。
Qt的examples目录中提供了“合成模式”示例,您可以尝试各种合成模式并立即查看结果。
局限性
如果您将坐标与Qt的基于栅格的绘画引擎一起使用,则需要注意的是,尽管可以使用大于+/- 215的坐标,但不能保证显示任何超出此范围的绘画;该图可能会被剪切。这是由于在实现中使用了short int。
Qt的笔触生成的轮廓只是在处理弯曲形状时的近似值。在大多数情况下,不可能使用另一个贝塞尔曲线段来表示贝塞尔曲线段的轮廓,因此Qt通过使用一些较小的曲线来近似曲线轮廓。出于性能原因,Qt用于这些轮廓的曲线数是有限制的,因此,当使用较大的笔宽或刻度时,轮廓误差会增加。要生成误差较小的轮廓,可以使用QPainterPathStroker类,该类具有setCurveThreshold成员函数,让用户指定误差容限。另一个解决方法是先将路径转换为多边形,然后改为绘制多边形。
Performance
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。
-
使用纯色和两种颜色的线性渐变填充的圆角矩形填充。
-
通过qDrawBorderPixmap 3x3修补的像素图。
该列表指示了在性能至关重要的应用程序中可以安全使用哪些功能。 对于某些设置,其他操作也可能很快,但是在广泛使用它们之前,建议在最终将运行软件的系统上进行基准测试和验证。 在某些情况下,也可以使用昂贵的操作,例如,将结果缓存在QPixmap中。
另请参见QPaintDevice,QPaintEngine,Qt SVG,基本图形示例和图形实用程序功能。
公共类型
class PixmapFragment
这个类与QPainter::drawPixmapFragments()函数一起使用,用来指定一个像素图或者一个像素图的子矩形是如何绘制的。
sourceLeft、sourceTop、width和height变量被用作传入QPainter::drawPixmapFragments()函数的像素图中的源矩形。变量x、y、宽度和高度用于计算所绘制的目标矩形。x、y为目标矩形的中心。目标矩形中的宽度和高度通过scaleX和scaleY值进行缩放。然后将得到的目标矩形围绕x, y中心点旋转角度。
enum CompositionMode
定义数字图像合成所支持的模式。合成模式用于指定一幅图像中的像素(源)如何与另一幅图像中的像素(目标)合并。
请注意,用光栅前缀表示的逐位光栅操作模式仅在X11和光栅绘制引擎中得到本机支持。这意味着在Mac上使用这些模式的唯一方式是通过QImage。使用alpha组件的笔和笔刷不支持光栅表示的混合模式。此外,打开QPainter::Antialiasing渲染提示将有效地禁用光栅模式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3E1XzBBr-1664258731404)(images/20201207225652.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XTkDoWFN-1664258731404)(images/20201207225701.png)]
最常见的类型是SourceOver(通常被称为alpha混合),其中源像素被混合在目标像素的顶部,用源的alpha组件来定义像素的半透明度。
有几种合成模式需要在源或目标图像中有一个alpha通道才能产生效果。为了获得最佳性能,首选图像格式format_argb32_premultiply。
当组合模式被设置,它适用于所有的绘画操作,钢笔,画笔,梯度和像素图/图像绘制。
Constant | Value | Description |
---|---|---|
CompositionMode_SourceOver | 0 | 这是默认模式。光源的alpha用于混合目标上的像素。 |
CompositionMode_DestinationOver | 1 | 目标的alpha用于在源像素上混合它。该模式是CompositionMode_SourceOver的逆模式。 |
CompositionMode_Clear | 2 | 目标中的像素被清除(设置为完全透明),与源无关。 |
CompositionMode_Source | 3 | 输出是源像素。(这意味着一个基本的复制操作,当源像素是不透明的时候,它与源转移是相同的)。 |
CompositionMode_Destination | 4 | 输出的是目标像素。这意味着混合没有效果。该模式与CompositionMode_Source相反。 |
CompositionMode_SourceIn | 5 | 输出是源,其中的阿尔法是减少的目标。 |
CompositionMode_DestinationIn | 6 | 输出是目标,其中的alpha被源减少。该模式是CompositionMode_SourceIn的逆模式。 |
CompositionMode_SourceOut | 7 | 输出是源,其中的阿尔法是由目标的倒数减少。 |
CompositionMode_DestinationOut | 8 | 输出是目标,其中的alpha被源的倒数减少。该模式与CompositionMode_SourceOut相反。 |
CompositionMode_SourceAtop | 9 | 源像素混合在目标像素上,源像素的alpha减少到目标像素的alpha。 |
CompositionMode_DestinationAtop | 10 | 目标像素混合在源像素上,目标像素的alpha被目标像素的alpha减少。这个模式是compositionmode_sourcetop的反向。 |
CompositionMode_Xor | 11 | 以目标的倒数降低的源与目标合并,目标的倒数降低的源。CompositionMode_Xor与按位的Xor不同。 |
CompositionMode_Plus | 12 | 源和目标像素的alpha和颜色都被添加到一起。 |
CompositionMode_Multiply | 13 | 输出是源颜色乘以目标颜色。用白色相乘的叶子颜色不变,而用黑色相乘的叶子颜色变黑。 |
CompositionMode_Screen | 14 | 源色和目标色被颠倒,然后相乘。用白色筛分所产生的是白色,而用黑色筛分所产生的叶子颜色不变。 |
CompositionMode_Overlay | 15 | 根据目标颜色复制或显示颜色。目标色与源色混合,以反映目标的明度或暗度。 |
CompositionMode_Darken | 16 | 选择源色和目标色的较暗颜色。 |
CompositionMode_Lighten | 17 | 选择源和目标颜色中较浅的颜色。 |
CompositionMode_ColorDodge | 18 | 目的色被点亮以反映源色。一个黑色的源颜色保持目标颜色不变。 |
CompositionMode_ColorBurn | 19 | 目的色被调暗以反映源色。一个白色的源颜色保持目标颜色不变。 |
CompositionMode_HardLight | 20 | 根据源颜色复制或显示颜色。光源颜色会使目标颜色变亮,而暗光源颜色会使目标颜色变暗。 |
CompositionMode_SoftLight | 21 | 根据源色使颜色变暗或变亮。类似于CompositionMode_HardLight。 |
CompositionMode_Difference | 22 | 从浅颜色中减去深颜色。使用白色绘制将使目标颜色反转,而使用黑色绘制将使目标颜色保持不变。 |
CompositionMode_Exclusion | 23 | 类似于CompositionMode_Difference,但是对比度较低。使用白色绘制将使目标颜色反转,而使用黑色绘制将使目标颜色保持不变。 |
RasterOp_SourceOrDestination | 24 | 对源和目标像素(src或dst)执行按位或操作。 |
RasterOp_SourceAndDestination | 25 | 对源和目标像素(src和dst)执行按位和操作。 |
RasterOp_SourceXorDestination | 26 | 对源和目标像素执行逐位异或操作(src异或dst)。 |
RasterOp_NotSourceAndNotDestination | 27 | 对源和目标像素((不是src)和(不是dst))执行位NOR操作。 |
RasterOp_NotSourceOrNotDestination | 28 | 对源和目标像素((不是src)或(不是dst))执行按位NAND操作。 |
RasterOp_NotSourceXorDestination | 29 | 执行逐位操作,其中源像素被倒转,然后与目标(不是src)异或dst异或。 |
RasterOp_NotSource | 30 | 执行一个逐位操作,其中源像素是反向的(不是src)。 |
RasterOp_NotSourceAndDestination | 31 | 执行一个逐位操作,其中源被颠倒,然后与目标(不是src)和dst)一起被颠倒。 |
RasterOp_SourceAndNotDestination | 32 | 执行一个按位操作,其中源被倒置的目标像素(src和(不是dst))和’ed。 |
RasterOp_NotSourceOrDestination | 33 | 执行一个逐位操作,其中源被反向,然后用OR’ed与目标(不是src)或dst)连接。 |
RasterOp_ClearDestination | 35 | 目标中的像素被清除(设置为0),与源无关。 |
RasterOp_SetDestination | 36 | 目标像素的设置(设置为1)独立于源。 |
RasterOp_NotDestination | 37 | 执行一个逐位操作,其中目标像素是反向的(不是dst)。 |
RasterOp_SourceOrNotDestination | 34 | 执行一个逐位操作,其中源与反向的目标像素(src或(不是dst))对齐。 |
参见compositionMode()、setCompositionMode()、合成模式和图像合成示例。
enum PixmapFragmentHint
flags PixmapFragmentHints
Constant | Value | Description |
---|---|---|
OpaqueHint | 0x01 | 指示要绘制的像素图片段是不透明的。不透明片段可能绘制得更快。 |
请参阅QPainter::drawPixmapFragments()和QPainter::PixmapFragment。
enum RenderHint
flags RenderHints
Renderhints被用来指定QPainter的标志,它可能被也可能不被任何引擎所尊重。
Constant | Value | Description |
---|---|---|
Antialiasing | 0x01 | 指示引擎应尽可能消除原语的边缘锯齿。 |
TextAntialiasing | 0x02 | 指示引擎应尽可能消除文本的别名。若要强制禁用文本的反锯齿,请不要使用此提示。相反,在你的字体风格策略上设置QFont::NoAntialias。 |
SmoothPixmapTransform | 0x04 | 表示引擎应该使用平滑的像素图转换算法(如双线性)而不是最近邻算法。 |
HighQualityAntialiasing | 0x08 | 这个值是过时的,将被忽略,使用反锯齿渲染提示代替。 |
NonCosmeticDefaultPen | 0x10 | 这个值已经过时了,QPen的默认值现在是非修饰性的。 |
Qt4CompatiblePainting | 0x20 | 兼容性提示告诉引擎使用与Qt 4相同的基于X11的填充规则,其中别名的渲染偏移略小于半像素。也将默认构造的笔作为化妆品。在将Qt 4应用程序移植到Qt 5时可能很有用。 |
LosslessImageRendering | 0x40 | 尽可能使用无损图像渲染。目前,这个提示只在使用QPainter通过QPrinter或QPdfWriter输出PDF文件时使用,其中drawImage()/drawPixmap()调用将使用无损压缩算法对图像进行编码,而不是有损的JPEG压缩。在Qt 5.13中增加了这个值。 |
参见renderHints()、setRenderHint()、渲染质量和同心圆的例子。
公共函数
构造和析构
- QPainter(QPaintDevice *device)
- QPainter()
- ~QPainter()
相关设备
- QPaintDevice * device() const
- QPaintEngine * paintEngine() const
画笔和画刷
- const QPen & pen() const
- void setPen(…)
- const QBrush & brush() const
- void setBrush(…)
- QPoint brushOrigin() const
- void setBrushOrigin(…)
- const QBrush & background() const
- void setBackground(const QBrush &brush)
相关设置和操作
- Qt::BGMode backgroundMode() const
- void setBackgroundMode(Qt::BGMode mode)
- bool begin(QPaintDevice *device)
- bool end()
- void beginNativePainting()
- void endNativePainting()
- void save()
- void restore()
- QPainter::CompositionMode compositionMode() const
- void setCompositionMode(QPainter::CompositionMode mode)
- bool isActive() const
- const QFont & font() const
- void setFont(const QFont &font)
- QFontInfo fontInfo() const
- QFontMetrics fontMetrics() const
- Qt::LayoutDirection layoutDirection() const
- void setLayoutDirection(Qt::LayoutDirection direction)
- qreal opacity() const
- void setOpacity(qreal opacity)
- bool testRenderHint(QPainter::RenderHint hint) const
- void setRenderHint(QPainter::RenderHint hint, bool on = true)
- QPainter::RenderHints renderHints() const
- void setRenderHints(QPainter::RenderHints hints, bool on = true)
剪切
- bool hasClipping() const
- void setClipping(bool enable)
- QRectF clipBoundingRect() const
- QPainterPath clipPath() const
- void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
- QRegion clipRegion() const
- void setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip)
- void setClipRect(…)
绘制基本图形
- void drawArc(…)
- void drawChord(…)
- void drawConvexPolygon(…)
- void drawEllipse(…)
- void drawLine(…)
- void drawPie(…)
- void drawPoint(…)
- void drawPoints(…)
- void drawPolygon(…)
- void drawPolyline(…)
- void drawRect(…)
- void drawRects(…)
- void drawRoundedRect(…)
画图
- void drawImage(…)
- void drawPicture(…)
- void drawPixmap(…)
- void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
- void drawTiledPixmap(…)
画路径
- void strokePath(const QPainterPath &path, const QPen &pen)
- void drawPath(const QPainterPath &path)
- void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
画文字
- void drawStaticText(…)
- void drawText(…)
- QRect boundingRect(c…)
- QRectF boundingRect(…)
擦除
- void eraseRect(…)
填充
- void fillRect(…)
- void fillPath(const QPainterPath &path, const QBrush &brush)
视口窗口
- QRect viewport() const
- void setViewport(…)
- QRect window() const
- void setWindow(…)
变换
- const QTransform & deviceTransform() const
- void setWorldMatrixEnabled(bool enable)
- QTransform combinedTransform() const
- void shear(qreal sh, qreal sv)
- void rotate(qreal angle)
- void scale(qreal sx, qreal sy)
- void translate(…)
- const QTransform & transform() const
- void setTransform(const QTransform &transform, bool combine = false)
- void resetTransform()
- bool viewTransformEnabled() const
- void setViewTransformEnabled(bool enable)
- bool worldMatrixEnabled() const
- const QTransform & worldTransform() const
- void setWorldTransform(const QTransform &matrix, bool combine = false)