绘画系统(03):【类】QPainter[官翻]

QPainter类

https://doc.qt.io/qt-5/qpainter.html

QPainter类在小部件和其他绘画设备上执行低级绘画。

Header#include < QPainter >
qmakeQT += gui
Inherited ByQStylePainter

详述

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 DeformationGradientsPath 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对坐标转换有很好的支持。

noprotate()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。

当组合模式被设置,它适用于所有的绘画操作,钢笔,画笔,梯度和像素图/图像绘制。

ConstantValueDescription
CompositionMode_SourceOver0这是默认模式。光源的alpha用于混合目标上的像素。
CompositionMode_DestinationOver1目标的alpha用于在源像素上混合它。该模式是CompositionMode_SourceOver的逆模式。
CompositionMode_Clear2目标中的像素被清除(设置为完全透明),与源无关。
CompositionMode_Source3输出是源像素。(这意味着一个基本的复制操作,当源像素是不透明的时候,它与源转移是相同的)。
CompositionMode_Destination4输出的是目标像素。这意味着混合没有效果。该模式与CompositionMode_Source相反。
CompositionMode_SourceIn5输出是源,其中的阿尔法是减少的目标。
CompositionMode_DestinationIn6输出是目标,其中的alpha被源减少。该模式是CompositionMode_SourceIn的逆模式。
CompositionMode_SourceOut7输出是源,其中的阿尔法是由目标的倒数减少。
CompositionMode_DestinationOut8输出是目标,其中的alpha被源的倒数减少。该模式与CompositionMode_SourceOut相反。
CompositionMode_SourceAtop9源像素混合在目标像素上,源像素的alpha减少到目标像素的alpha。
CompositionMode_DestinationAtop10目标像素混合在源像素上,目标像素的alpha被目标像素的alpha减少。这个模式是compositionmode_sourcetop的反向。
CompositionMode_Xor11以目标的倒数降低的源与目标合并,目标的倒数降低的源。CompositionMode_Xor与按位的Xor不同。
CompositionMode_Plus12源和目标像素的alpha和颜色都被添加到一起。
CompositionMode_Multiply13输出是源颜色乘以目标颜色。用白色相乘的叶子颜色不变,而用黑色相乘的叶子颜色变黑。
CompositionMode_Screen14源色和目标色被颠倒,然后相乘。用白色筛分所产生的是白色,而用黑色筛分所产生的叶子颜色不变。
CompositionMode_Overlay15根据目标颜色复制或显示颜色。目标色与源色混合,以反映目标的明度或暗度。
CompositionMode_Darken16选择源色和目标色的较暗颜色。
CompositionMode_Lighten17选择源和目标颜色中较浅的颜色。
CompositionMode_ColorDodge18目的色被点亮以反映源色。一个黑色的源颜色保持目标颜色不变。
CompositionMode_ColorBurn19目的色被调暗以反映源色。一个白色的源颜色保持目标颜色不变。
CompositionMode_HardLight20根据源颜色复制或显示颜色。光源颜色会使目标颜色变亮,而暗光源颜色会使目标颜色变暗。
CompositionMode_SoftLight21根据源色使颜色变暗或变亮。类似于CompositionMode_HardLight。
CompositionMode_Difference22从浅颜色中减去深颜色。使用白色绘制将使目标颜色反转,而使用黑色绘制将使目标颜色保持不变。
CompositionMode_Exclusion23类似于CompositionMode_Difference,但是对比度较低。使用白色绘制将使目标颜色反转,而使用黑色绘制将使目标颜色保持不变。
RasterOp_SourceOrDestination24对源和目标像素(src或dst)执行按位或操作。
RasterOp_SourceAndDestination25对源和目标像素(src和dst)执行按位和操作。
RasterOp_SourceXorDestination26对源和目标像素执行逐位异或操作(src异或dst)。
RasterOp_NotSourceAndNotDestination27对源和目标像素((不是src)和(不是dst))执行位NOR操作。
RasterOp_NotSourceOrNotDestination28对源和目标像素((不是src)或(不是dst))执行按位NAND操作。
RasterOp_NotSourceXorDestination29执行逐位操作,其中源像素被倒转,然后与目标(不是src)异或dst异或。
RasterOp_NotSource30执行一个逐位操作,其中源像素是反向的(不是src)。
RasterOp_NotSourceAndDestination31执行一个逐位操作,其中源被颠倒,然后与目标(不是src)和dst)一起被颠倒。
RasterOp_SourceAndNotDestination32执行一个按位操作,其中源被倒置的目标像素(src和(不是dst))和’ed。
RasterOp_NotSourceOrDestination33执行一个逐位操作,其中源被反向,然后用OR’ed与目标(不是src)或dst)连接。
RasterOp_ClearDestination35目标中的像素被清除(设置为0),与源无关。
RasterOp_SetDestination36目标像素的设置(设置为1)独立于源。
RasterOp_NotDestination37执行一个逐位操作,其中目标像素是反向的(不是dst)。
RasterOp_SourceOrNotDestination34执行一个逐位操作,其中源与反向的目标像素(src或(不是dst))对齐。

参见compositionMode()、setCompositionMode()、合成模式和图像合成示例。

enum PixmapFragmentHint

flags PixmapFragmentHints

ConstantValueDescription
OpaqueHint0x01指示要绘制的像素图片段是不透明的。不透明片段可能绘制得更快。

请参阅QPainter::drawPixmapFragments()和QPainter::PixmapFragment。

enum RenderHint

flags RenderHints
Renderhints被用来指定QPainter的标志,它可能被也可能不被任何引擎所尊重。

ConstantValueDescription
Antialiasing0x01指示引擎应尽可能消除原语的边缘锯齿。
TextAntialiasing0x02指示引擎应尽可能消除文本的别名。若要强制禁用文本的反锯齿,请不要使用此提示。相反,在你的字体风格策略上设置QFont::NoAntialias。
SmoothPixmapTransform0x04表示引擎应该使用平滑的像素图转换算法(如双线性)而不是最近邻算法。
HighQualityAntialiasing0x08这个值是过时的,将被忽略,使用反锯齿渲染提示代替。
NonCosmeticDefaultPen0x10这个值已经过时了,QPen的默认值现在是非修饰性的。
Qt4CompatiblePainting0x20兼容性提示告诉引擎使用与Qt 4相同的基于X11的填充规则,其中别名的渲染偏移略小于半像素。也将默认构造的笔作为化妆品。在将Qt 4应用程序移植到Qt 5时可能很有用。
LosslessImageRendering0x40尽可能使用无损图像渲染。目前,这个提示只在使用QPainter通过QPrinter或QPdfWriter输出PDF文件时使用,其中drawImage()/drawPixmap()调用将使用无损压缩算法对图像进行编码,而不是有损的JPEG压缩。在Qt 5.13中增加了这个值。

参见renderHints()、setRenderHint()、渲染质量和同心圆的例子。

公共函数

构造和析构

  1. QPainter(QPaintDevice *device)
  2. QPainter()
  3. ~QPainter()

相关设备

  1. QPaintDevice * device() const
  2. QPaintEngine * paintEngine() const

画笔和画刷

  1. const QPen & pen() const
  2. void setPen(…)
  3. const QBrush & brush() const
  4. void setBrush(…)
  5. QPoint brushOrigin() const
  6. void setBrushOrigin(…)
  7. const QBrush & background() const
  8. void setBackground(const QBrush &brush)

相关设置和操作

  1. Qt::BGMode backgroundMode() const
  2. void setBackgroundMode(Qt::BGMode mode)
  3. bool begin(QPaintDevice *device)
  4. bool end()
  5. void beginNativePainting()
  6. void endNativePainting()
  7. void save()
  8. void restore()
  9. QPainter::CompositionMode compositionMode() const
  10. void setCompositionMode(QPainter::CompositionMode mode)
  11. bool isActive() const
  12. const QFont & font() const
  13. void setFont(const QFont &font)
  14. QFontInfo fontInfo() const
  15. QFontMetrics fontMetrics() const
  16. Qt::LayoutDirection layoutDirection() const
  17. void setLayoutDirection(Qt::LayoutDirection direction)
  18. qreal opacity() const
  19. void setOpacity(qreal opacity)
  20. bool testRenderHint(QPainter::RenderHint hint) const
  21. void setRenderHint(QPainter::RenderHint hint, bool on = true)
  22. QPainter::RenderHints renderHints() const
  23. void setRenderHints(QPainter::RenderHints hints, bool on = true)

剪切

  1. bool hasClipping() const
  2. void setClipping(bool enable)
  3. QRectF clipBoundingRect() const
  4. QPainterPath clipPath() const
  5. void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
  6. QRegion clipRegion() const
  7. void setClipRegion(const QRegion &region, Qt::ClipOperation operation = Qt::ReplaceClip)
  8. void setClipRect(…)

绘制基本图形

  1. void drawArc(…)
  2. void drawChord(…)
  3. void drawConvexPolygon(…)
  4. void drawEllipse(…)
  5. void drawLine(…)
  6. void drawPie(…)
  7. void drawPoint(…)
  8. void drawPoints(…)
  9. void drawPolygon(…)
  10. void drawPolyline(…)
  11. void drawRect(…)
  12. void drawRects(…)
  13. void drawRoundedRect(…)

画图

  1. void drawImage(…)
  2. void drawPicture(…)
  3. void drawPixmap(…)
  4. void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
  5. void drawTiledPixmap(…)

画路径

  1. void strokePath(const QPainterPath &path, const QPen &pen)
  2. void drawPath(const QPainterPath &path)
  3. void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)

画文字

  1. void drawStaticText(…)
  2. void drawText(…)
  3. QRect boundingRect(c…)
  4. QRectF boundingRect(…)

擦除

  1. void eraseRect(…)

填充

  1. void fillRect(…)
  2. void fillPath(const QPainterPath &path, const QBrush &brush)

视口窗口

  1. QRect viewport() const
  2. void setViewport(…)
  3. QRect window() const
  4. void setWindow(…)

变换

  1. const QTransform & deviceTransform() const
  2. void setWorldMatrixEnabled(bool enable)
  3. QTransform combinedTransform() const
  4. void shear(qreal sh, qreal sv)
  5. void rotate(qreal angle)
  6. void scale(qreal sx, qreal sy)
  7. void translate(…)
  8. const QTransform & transform() const
  9. void setTransform(const QTransform &transform, bool combine = false)
  10. void resetTransform()
  11. bool viewTransformEnabled() const
  12. void setViewTransformEnabled(bool enable)
  13. bool worldMatrixEnabled() const
  14. const QTransform & worldTransform() const
  15. void setWorldTransform(const QTransform &matrix, bool combine = false)
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值