QPainter类

QPainter类用于在控件和其它绘图设备上进行绘制。


Header:#include <QPainter>
CMake:find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake:QT += gui
Inherited By:

QStylePainter


详细说明>>>


【公共类型】

class

PixmapFragment

这个类用于在 QPainter::drawPixmapFragments() 函数中绘制一个像素图。

enum

CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, …, RasterOp_SourceOrNotDestination }

合成模式的枚举

enum

PixmapFragmentHint { OpaqueHint }

透明模式枚举(本质上只是一个开关)

flags

PixmapFragmentHints

返回当前透明模式

enum

RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform, VerticalSubpixelPositioning, LosslessImageRendering, NonCosmeticBrushPatterns }

渲染设置

flags

RenderHints

返回渲染设置状态


【公有函数 】

QPainter()
构造空painter。
QPainter(QPaintDevice *device)

在绘制设备device构造一个painter并可以立即绘制。 此构造函数对只使用一次绘制很方便。例如在QWidget::paintEvent()中,构造函数为您调用begin(),而QPainter析构函数自动调用end()。

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

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

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

/~QPainter()
const QBrush &

background() const

返回当前背景笔刷。
Qt::BGMode

backgroundMode() const

返回当前背景模式(只有两种:透明Qt::TransparentMode或不透明Qt::OpaqueMode)
bool

begin(QPaintDevice *device)

在绘制设备上开始绘制,成功返回true;失败返回false。

注意:所有的绘图设置(setPen(),setBrush()等)在此函数调用时,都会被重置为默认值。 可能发生的错误是严重的问题,例如:

注意:大多数情况都可以使用构造函数来代替 begin(),并且end() 会在析构时自动完成的。

警告:一个绘图设备一次只能由一个painter进行绘画。

警告:不支持在格式为QImage::Format_Indexed8QImage上绘制。

voidbeginNativePainting()

刷新绘制管道并为用户直接向底层图形上下文发出命令做准备。必须后跟对endNativePainting()的调用。

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

禁用blending(混合)。

禁用depth(深度),stencil(图案),scissor tests(剪式测试)。

active texture unit(活动纹理单元)重置为0。

depth mask(深度遮罩), depth function(深度函数)和 clear depth(清除深度)重置为默认值。

stencil mask(模板掩码), stencil operation(模板操作)和 stencil function(模板功能)重置为默认值。

current color(当前颜色)重置为纯白色。

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

QRectFboundingRect(const QRectF &rectangle, int flags, const QString &text)

使用当前设置的font()返回带有指定标志 flags 的 text 在给定矩形rectangle内绘制时的边框;也就是说,当给定相同的参数时,该函数告诉您drawText()函数将在哪里绘制。 如果 text 不适合使用指定标志 flags 的给定矩形rectangle,则该函数返回所需的矩形。 flags参数是以下标志的按位“或”运算:

如果设置了几个水平对齐标志或几个垂直对齐标志,则对齐结果是未定义的。

QRectboundingRect(const QRect &rectangle, int flags, const QString &text)
重载。使用当前设置的font()返回带有指定标志flagstext在给定矩形内rectangle绘制时的边框。
QRectboundingRect(int x, int y, int w, int h, int flags, const QString &text)
重载。返回给定文本的边框,它将在从点(x,y)开始、宽度为w、高度为h的矩形内绘制。
QRectFboundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
这个重载函数没有将标志指定为Qt::AlignmentFlag 和 Qt::TextFlag的按位OR,而是采用一个option选项参数。QTextOption 类提供了对常规富文本属性的描述。
const QBrush &brush() const
返回painter的当前画笔。
QPointbrushOrigin() const
返回当前设置的画笔原点。
QRectFclipBoundingRect() const

如果有剪辑,则返回当前剪辑的边框;否则返回一个空矩形。

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

边框不能保证是紧密的。

QPainterPathclipPath() const

返回逻辑坐标中的当前剪辑路径。

警告:QPainter不会显式存储组合剪辑,因为这是由底层QPaintEngine处理的,因此会根据需要重新创建路径并将其转换到当前逻辑坐标系。这可能是一个昂贵的操作。

QRegionclipRegion() const
返回当前设置的剪辑区域。注意剪辑区域是以逻辑坐标给出的。【警告同上】
QTransformcombinedTransform() const
返回组合当前窗口/视口和世界变换的变换矩阵。

QPainter::

CompositionMode

compositionMode() const
返回当前合成模式。
QPaintDevice *device() const
返回此 painter当前正在其上绘画的设备,如果painter未处于活动状态,则返回nullptr。

const

QTransform &

deviceTransform() const

返回从逻辑坐标转换到平台相关绘画设备的设备坐标的矩阵。

只有在平台相关句柄 (Qt::HANDLE)上使用平台绘制命令时才需要此函数,并且平台本身不进行转换。 可以查询QPaintEngine::PaintEngineFeature 枚举来确定平台是否执行转换。

voiddrawArc(const QRectF &rectangle, int startAngle, int spanAngle)

绘制由给定矩形rectangle、startAngle和spanAngle定义的弧线。

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

voiddrawArc(const QRect &rectangle, int startAngle, int spanAngle)
重载,功能同上。
voiddrawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
从(x,y)开始,以指定的宽度w和高度h以及给定的起始角度startAngle和跨度角度spanAngle绘制由矩形定义的圆弧。
voiddrawChord(const QRectF &rectangle, int startAngle, int spanAngle)

绘制由给定矩形rectangle、起始角度startAngle和跨度角度spanAngle定义的弦,弦由当前画笔填充brush()。

voiddrawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
以指定的宽度和高度以及给定的起始角度和跨度角度绘制由从(x,y)开始的矩形定义的弦。
voiddrawChord(const QRect &rectangle, int startAngle, int spanAngle)
绘制由给定矩形、startAngle和spanAngle定义的弦。
voiddrawConvexPolygon(const QPointF *points, int pointCount)
voiddrawConvexPolygon(const QPoint *points, int pointCount)

使用当前钢笔绘制由数组点points中的第一个计数点pointCount定义的凸多边形。

第一个点隐式连接到最后一个点,并且用当前brush()填充多边形。如果提供的多边形不是凸的,即它包含至少一个大于180度的角,则结果是未定义的。 在某些平台上(例如X11)drawConvexPolygon()函数可能比drawPolygon()函数更快。

voiddrawConvexPolygon(const QPolygonF &polygon)
voiddrawConvexPolygon(const QPolygon &polygon)
使用当前钢笔和画笔绘制由多边形polygon定义的凸多边形。
voiddrawEllipse(const QRectF &rectangle)
voiddrawEllipse(const QRect &rectangle)

绘制由给定矩形rectangle定义的椭圆。

实心椭圆的大小为rectangle.size();描边椭圆的大小为rectangle.size() 加上钢笔宽度。

voiddrawEllipse(int x, int y, int width, int height)
以给定的宽度和高度绘制由从(x,y)开始的矩形定义的椭圆。
voiddrawEllipse(const QPointF &center, qreal rx, qreal ry)
voiddrawEllipse(const QPoint &center, int rx, int ry)
以半径rx和ry绘制位于中心center的椭圆。
voiddrawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)

position位置绘制由标志符号glyphs表示的符号。该位置给出了字形字符串的基线边缘。将从字形glyphs上选择的字体中检索字形,偏移量由字形中的位置给出。

参见: QGlyphRun::setRawFont(), QGlyphRun::setPositions(), and QGlyphRun::setGlyphIndexes()

voiddrawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
voiddrawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)

在绘画设备中将给定图像image的矩形部分source绘制到目标矩形target中。

注意:如果图像和矩形大小不一致,图像将被缩放以适合矩形。

注意:请参见Drawing High Resolution Versions of Pixmaps and Images (绘制高分辨率版本的像素图和图像),了解QImage::devicePixelRatio()对此有何影响。

如果需要修改图像以适应较低分辨率的结果(例如从32位转换为8位),请使用标志 flags 来指定您希望如何进行。

voiddrawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
voiddrawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
以给定点point为原点绘制给定image图像的source矩形部分。
voiddrawImage(const QRectF &rectangle, const QImage &image)
voiddrawImage(const QRect &rectangle, const QImage &image)
将给定图像image绘制到给定矩形rectangle中。
voiddrawImage(const QPointF &point, const QImage &image)
voiddrawImage(const QPoint &point, const QImage &image)
在给定点point绘制给定图像image
voiddrawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)

通过将image图像的一部分复制到绘画设备中。(xy) 指定绘制设备的左上角点, (sxsy) 指定图像中的左上角点。默认值为(0, 0)。

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

voiddrawLine(const QLineF &line)
voiddrawLine(const QLine &line)

绘制由line定义的直线。

voiddrawLine(int x1, int y1, int x2, int y2)
绘制一条从(x1,y1)到(x2,y2)的直线。
voiddrawLine(const QPoint &p1, const QPoint &p2)
voiddrawLine(const QPointF &p1, const QPointF &p2)
绘制一条从p1到p2的直线。
voiddrawLines(const QLineF *lines, int lineCount)
使用当前 pen 绘制数组lines中的第一行lineCount
voiddrawLines(const QList<QLineF> &lines)
使用当前 pen 和 brush绘制由列表lines定义的一组线条。
voiddrawLines(const QPointF *pointPairs, int lineCount)
voiddrawLines(const QPoint *pointPairs, int lineCount)
使用当前 pen 在数组点对pointPairs中绘制第一行lineCount。线被指定为点对,因此pointPairs中的条目数必须至少为lineCount * 2。
voiddrawLines(const QList<QPointF> &pointPairs)
voiddrawLines(const QList<QPoint> &pointPairs)
使用当前 pen 为矢量点对pointPairs中的每对点绘制一条线。如果数组中有奇数个点,最后一个点将被忽略。
voiddrawLines(const QLine *lines, int lineCount)
使用当前 pen 绘制数组lines中的第一行lineCount
voiddrawLines(const QList<QLine> &lines)
使用当前 pen 和 brush 绘制由列表lines定义的一组线条。
voiddrawPath(const QPainterPath &path)

使用当前 pen 绘制轮廓,使用当前画笔填充给定的画师路径 path 

voiddrawPicture(const QPointF &point, const QPicture &picture)

在给定点point重放给定图片picture

QPicture 类在一个绘画设备上记录和重放QPainter命令。图片以独立于平台的格式将画师painter序列化到IO设备。可以在控件或像素图上绘制的所有内容也可以存储在图片中。 当使用point = QPointF(0, 0)调用时,该函数的作用与QPicture::play()完全相同。

注意:painter的状态由该函数保存。

voiddrawPicture(int x, int y, const QPicture &picture)
在点(x,y)绘制给定的图片picture
voiddrawPicture(const QPoint &point, const QPicture &picture)
在给定point重放给定图片picture
voiddrawPie(const QRectF &rectangle, int startAngle, int spanAngle)
voiddrawPie(const QRect &rectangle, int startAngle, int spanAngle)

绘制由给定矩形rectangle、startAngle和spanAngle定义的饼图。 饼图用当前画笔填充brush()。

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

voiddrawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
以指定的宽度和高度以及给定的起始角度startAngle和跨度角度spanAngle绘制由从(x,y)开始的矩形定义的饼图。
voiddrawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
voiddrawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)

将给定位图pixmap的矩形部分source绘制到绘画设备中的给定目标target中。

注意:如果像素图和矩形大小不一致,像素图将被缩放以适应矩形。

注意:请参见Drawing High Resolution Versions of Pixmaps and Images (绘制高分辨率版本的像素图和图像),了解QImage::devicePixelRatio()对此有何影响。

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

voiddrawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
在点(x,y)绘制给定像素图pixmap的原点(sx,sy)、宽度sw和高度sh的矩形部分,宽度为w,高度为h 。如果sw或sh等于零,则使用pixmap的宽度/高度,并通过偏移sx/sy进行调整;
voiddrawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
通过将给定位图pixmap的一部分复制到绘画设备中,在(x,y)处绘制位图。 (x,y)指定绘制设备的左上角点。(sx,sy)指定位图中要绘制的左上角点。默认值为(0,0)。 指定将要绘制的位图的大小。默认值(0,0)和负数)表示一直到位图的右下角。
voiddrawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
voiddrawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
以给定点point为原点绘制给定位图pixmap的矩形部分source
voiddrawPixmap(const QPointF &point, const QPixmap &pixmap)
voiddrawPixmap(const QPoint &point, const QPixmap &pixmap)
以给定点point为原点绘制给定的位图pixmap
voiddrawPixmap(int x, int y, const QPixmap &pixmap)
在位置(x,y)绘制给定的位图pixmap
voiddrawPixmap(const QRect &rectangle, const QPixmap &pixmap)
将给定的位图pixmap绘制到给定的矩形rectangle中。
voiddrawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
用给定的宽度和高度在位置(x,y)将位图pixmap绘制到矩形中。
voiddrawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())

此函数用于在多个位置以不同的比例、旋转和不透明度绘制像素图pixmap或像素图子矩形。fragments是一个fragmentCount元素的数组,指定用于绘制每个像素图片段的参数。提示参数hints可用于传入绘制提示。

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

voiddrawPoint(const QPointF &position)
voiddrawPoint(const QPoint &position)
使用当前pen的颜色在给定位置position绘制一个点。
voiddrawPoint(int x, int y)
在位置(x,y)绘制一个点。
voiddrawPoints(const QPointF *points, int pointCount)
voiddrawPoints(const QPoint *points, int pointCount)
使用当前pen的颜色绘制数组points中的第一个点pointCount
voiddrawPoints(const QPolygonF &points)
voiddrawPoints(const QPolygon &points)
在矢量points中绘制点。
voiddrawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
voiddrawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)

使用当前pen和brush绘制由数组points中的第一个点pointCount定义的多边形。

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

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

voiddrawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
voiddrawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
使用填充规则fillRule绘制由给定点points定义的多边形。
voiddrawPolyline(const QPointF *points, int pointCount)
voiddrawPolyline(const QPoint *points, int pointCount)
使用当前pen绘制由第一个pointCount点定义的折线。 请注意,与drawPolygon() 函数不同,最后一个点不与第一个点相连,也不填充折线。
voiddrawPolyline(const QPolygonF &points)
voiddrawPolyline(const QPolygon &points)
使用当前pen绘制由给定点points定义的折线。
voiddrawRect(const QRectF &rectangle)
voiddrawRect(const QRect &rectangle)

用当前pen和brush绘制当前矩形rectangle。 填充矩形的大小为rectangle.size(),描边矩形的大小为rectangle.size()加上钢笔宽度。

voiddrawRect(int x, int y, int width, int height)
绘制一个左上角位于(x,y)且具有给定宽度和高度的矩形。
voiddrawRects(const QRectF *rectangles, int rectCount)
voiddrawRects(const QRect *rectangles, int rectCount)
使用当前pen和brush绘制给定矩形rectangles的第一个rectCount
voiddrawRects(const QList<QRectF> &rectangles)
voiddrawRects(const QList<QRect> &rectangles)
使用当前的pen和brush绘制给定的矩形。
voiddrawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
voiddrawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)

绘制rect 给定的圆角矩形。 xRadius和yRadius参数指定定义圆角矩形角的椭圆的半径。当mode为Qt::RelativeSize时,xRadius和yRadius分别以矩形宽度和高度的一半的百分比指定,并且应在0.0到100.0的范围内。 填充矩形的大小为rect.size(),描边矩形的大小为rect.size()加上钢笔宽度。

voiddrawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
用圆角绘制给定的矩形x、y、w、h。
voiddrawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
voiddrawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)

在给定的topLeftPosition位置绘制给定的staticText。 将使用painter上设置的字体和变换绘制文本。如果painter上设置的字体和/或转换与用于初始化QStaticText,布局的字体和/或转换不同,则必须重新计算布局。使用 QStaticText::prepare()用稍后将绘制的字体和转换来初始化staticText。 如果 topLeftPositionstaticText初始化时或最后一次绘制时不同,则将文本转换到新位置时会有轻微的开销。

注意:如果painter的变换不是仿射的,那么将使用对drawText()的常规调用来绘制staticText,从而失去任何潜在的性能改进。

注意:y位置用作字体的顶部。

voiddrawStaticText(int left, int top, const QStaticText &staticText)
在左上方坐标绘制静态文本。
voiddrawText(const QPointF &position, const QString &text)
voiddrawText(const QPoint &position, const QString &text)

position给定位置开始,按照当前定义的文本方向text绘制给定文本。 此函数不处理换行符(\n),因为它不能将文本分成多行,也不能显示换行符。如果要使用换行符绘制多行文本,或者希望文本换行,请使用采用矩形的QPainter::drawText()重载。 默认情况下,QPainter绘制文本时会消除锯齿。

注意:y轴位置用作字体的基线。

voiddrawText(int x, int y, const QString &text)
重载。 使用painter当前定义的文本方向在位置(x,y)绘制给定文本text。 默认情况下,QPainter绘制文本时会消除锯齿。注意:y轴位置用作字体的基线。
voiddrawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
voiddrawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)

在提供的矩形rectangle内绘制给定文本text。矩形rectangle和对齐标志flags一起定义了文本的锚点。

boundingRect(如果不为null)被设置为包围整个文本的矩形。例如,在下图中,虚线表示由函数计算的boundingRect,虚线表示矩形:

flags参数是以下标志的按位“或”运算:

默认情况下,QPainter绘制文本时会消除锯齿。

注意:矩形的y坐标用作字体的顶部。

voiddrawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
在具有原点(x,y)、宽度和高度的矩形内绘制给定文本text。【其它参数及用法如上】
voiddrawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

使用选项option控制给定文本text的位置和方向,在指定的矩形中绘制文本。“option”中给出的选项会覆盖在QPainter对象本身上设置的选项。 默认情况下,QPainter绘制文本时会消除锯齿。

注意:矩形的y坐标用作字体的顶部。

voiddrawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
voiddrawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint())

在给定矩形rectangle内绘制平铺位图pixmap,其原点位于给定位置position

调用 drawTiledPixmap()类似于多次调用drawPixmap() 来用像素图填充(平铺)一个区域,但根据底层窗口系统的不同,这样做可能会更有效。 与普通dpi显示器相比,drawTiledPixmap()将在高dpi显示器(devicePixelRatio > 1)上产生相同的视觉平铺模式。

在像素图pixmap上设置devicePixelRatio以控制图块大小。例如,将其设置为平铺宽度和高度的一半(在1x和2x显示器上),并在2x显示器上产生高分辨率输出。 位置position偏移始终在painter 坐标系中,与显示设备像素比率无关。

voiddrawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
在指定矩形中绘制平铺位图。(x,y)指定要在其上绘制的绘制设备的左上角点;具有给定的宽度和高度。(sx,sy)指定位图中要绘制的左上角点;这默认为(0,0)。
boolend()
结束绘画。绘画时使用的任何资源都将被释放。通常不需要调用它,因为它是由析构函数调用的。 如果painter非活动状态,则返回true否则返回false。
voidendNativePainting()
在手动发出本机绘画命令后恢复painter。让painter在调用任何其他绘画命令之前恢复它所依赖的本机状态。
voideraseRect(const QRectF &rectangle)
voideraseRect(const QRect &rectangle)

擦除给定矩形rectangle内的区域。相当于:fillRect(rectangle, background());

voideraseRect(int x, int y, int width, int height)
从(x,y)开始擦除给定宽度和高度的矩形内的区域。
voidfillPath(const QPainterPath &path, const QBrush &brush)

使用给定的画笔填充给定的路径path,并不绘制该轮廓。。

您可以指定QColor而不是QBrush;QBrush构造函数(采用QColor参数)将自动创建实体图形笔刷。

voidfillRect(const QRectF &rectangle, const QBrush &brush)
voidfillRect(const QRect &rectangle, const QBrush &brush)
用指定的画笔brush填充给定的矩形rectangle。 或者,您可以指定一个QColor而不是QBrush构造函数(采用QColor参数)将自动创建一个纯色图案画笔。
voidfillRect(const QRect &rectangle, Qt::GlobalColor color)
voidfillRect(const QRectF &rectangle, const QColor &color)
用指定的颜色color填充给定的矩形rectangle
voidfillRect(int x, int y, int width, int height, const QColor &color)
voidfillRect(int x, int y, int width, int height, Qt::GlobalColor color)
使用给定的颜色color以给定的宽度和高度填充从(x,y)开始的矩形。
voidfillRect(int x, int y, int width, int height, const QBrush &brush)
使用给定的画笔color以给定的宽度和高度填充从(x,y)开始的矩形。
voidfillRect(const QRectF &rectangle, Qt::GlobalColor color)
用指定的颜色color填充给定的矩形rectangle
voidfillRect(const QRect &rectangle, Qt::BrushStyle style)
voidfillRect(const QRectF &rectangle, Qt::BrushStyle style)
用指定的画刷样式style填充给定的矩形。
voidfillRect(int x, int y, int width, int height, Qt::BrushStyle style)
使用指定的画刷样式style以给定的宽度和高度填充从(x,y)开始的矩形。
voidfillRect(int x, int y, int width, int height, QGradient::Preset preset)
使用给定的渐变预设preset,以给定的宽度和高度填充从(x,y)开始的矩形。
voidfillRect(const QRect &rectangle, QGradient::Preset preset)
voidfillRect(const QRectF &rectangle, QGradient::Preset preset)
用指定的渐变预设 preset 填充给定的矩形。
const QFont &font() const
返回当前设置的用于绘制文本的字体。
QFontInfofontInfo() const
如果painter处于活动状态,则返回painter的字体信息。否则,返回值是未定义的。
QFontMetricsfontMetrics() const
如果painter处于活动状态,则返回画师的字体规格。否则,返回值是未定义的。
boolhasClipping() const
如果已设置剪辑,则返回true否则返回false。
boolisActive() const
如果begin()已被调用而 end() 尚未被调用,则返回true否则返回false。

Qt::

LayoutDirection

layoutDirection() const
返回绘制文本时painter使用的布局方向。
qrealopacity() const
返回painter的不透明度。默认值为1。
QPaintEngine *paintEngine() const
如果painter处于活动状态,则返回painter当前正在操作的绘画引擎,否则为0。
const QPen &pen() const
返回画师的当前pen。

QPainter::

RenderHints

renderHints() const
返回一个标志,该标志指定为此painter设置的呈现提示。
voidresetTransform()
重置使用 translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() and setWindow()进行的任何变换。详见:Coordinate Transformations
voidrestore()
恢复当前painter状态(从堆栈中弹出保存的状态)。
voidrotate(qreal angle)
顺时针旋转坐标系。给定的角度angle参数以度为单位。
voidsave()
保存当前painter状态(将状态推送到堆栈上)。save()后面必须跟有相应的restore()和end()函数展开堆栈。
voidscale(qreal sx, qreal sy)
按(sx,sy)缩放坐标系。
voidsetBackground(const QBrush &brush)
将painter的背景笔刷设置为给定的笔刷。 背景画笔是在绘制不透明文本、点画线条和位图时填充的画笔。背景笔刷在透明背景模式(默认设置)下不起作用。
voidsetBackgroundMode(Qt::BGMode mode)

将painter的背景模式mode设置为给定模式。

Qt::TransparentMode (默认设置)绘制点画线条和文本,而不设置背景像素。 Qt::OpaqueMode用当前背景色填充这些空间。

请注意,为了透明地绘制位图或点阵图,您必须使用QPixmap::setMask()。

voidsetBrush(const QBrush &brush)
将painter的笔刷设置为给定的笔刷brush。 painter的画笔定义了如何填充形状。
voidsetBrush(Qt::BrushStyle style)
将painter的画笔设置为黑色和指定的样式。
voidsetBrushOrigin(const QPointF &position)
voidsetBrushOrigin(const QPoint &position)
画笔原点position指定画笔的(0,0)坐标。 painter不会绘制背景,除非通过将控件的autoFillBackground 属性设置为true来明确告诉它这样做。
voidsetBrushOrigin(int x, int y)
画笔原点position指定画笔的(0,0)坐标。【其它同上】
voidsetClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
启用剪辑,并通过剪辑操作将painter的剪辑路径设置为给定路径path。 请注意,剪辑路径是在逻辑(绘画)坐标中指定的。
voidsetClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
voidsetClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
启用剪辑,并使用给定的剪辑操作将剪辑区域设置为给定的矩形。默认操作是替换当前剪辑矩形。 请注意,剪辑矩形是在逻辑(绘画)坐标中指定的。
voidsetClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
启用剪辑,并将剪辑区域设置为从(x,y)开始的具有给定宽度和高度的矩形。
voidsetClipRegion(const QRegion &region, Qt::ClipOperation operation = Qt::ReplaceClip)
使用指定的剪辑操作将剪辑区域设置为给定区域。默认剪辑操作是替换当前剪辑区域。 注意剪辑区域是以逻辑坐标给出的。
voidsetClipping(bool enable)
如果enable为true,则启用剪辑;如果enable为false,则禁用剪辑。
voidsetCompositionMode(QPainter::CompositionMode mode)

将合成模式设置为给定模式。

警告:只有在QImage上运行的QPainter完全支持所有合成模式。X11支持光栅操作模式,如compositionMode()中所述。

voidsetFont(const QFont &font)
将painter的字体设置为给定字体font。 该字体由后续的 drawText() 函数使用。文本颜色与钢笔颜色相同。 如果您设置了一种不可用的字体,Qt会找到一种近似匹配的字体。font() 返回您使用setFont()设置的内容, fontInfo() 将返回实际使用的字体(可能相同)。
voidsetLayoutDirection(Qt::LayoutDirection direction)
将painter在绘制文本时使用的布局方向设置为指定方向。 默认值是Qt::LayoutDirectionAuto,它将隐式确定所绘制文本的方向。
voidsetOpacity(qreal opacity)
将painter的不透明度设置为不透明度。该值应在0.0到1.0的范围内,其中0.0表示完全透明,1.0表示完全不透明。 在painter上设置的不透明度将单独应用于所有绘制操作。
voidsetPen(const QPen &pen)
将painter的pen设置为给定的pen。 pen定义了如何绘制线条和轮廓,还定义了文本颜色。
voidsetPen(const QColor &color)
将painter的pen设置为具有Qt::SolidLine样式、宽度1和指定的color
voidsetPen(Qt::PenStyle style)
将painter的pen设置为给定的样式、宽度1和黑色。
voidsetRenderHint(QPainter::RenderHint hint, bool on = true)
voidsetRenderHints(QPainter::RenderHints hints, bool on = true)
如果on为true,则在painter上设置给定的渲染提示hints/hint;否则清除渲染提示。
voidsetTransform(const QTransform &transform, bool combine = false)
设置世界变换矩阵。如果combine为true,则指定的转换与当前矩阵合并;否则它替换当前矩阵。
voidsetViewTransformEnabled(bool enable)
如果enable为true,则启用视图转换;如果enable为false,则禁用视图转换。
voidsetViewport(const QRect &rectangle)
将painter的视口矩形设置为给定的矩形rectangle,并启用视图变换。 视口矩形是视图转换的一部分。视口指定设备坐标系。它的姊妹视图window()指定了逻辑坐标系。 默认视区矩形与设备的矩形相同。
voidsetViewport(int x, int y, int width, int height)
将painter的视口矩形设置为从(x,y)开始的具有给定宽度和高度的矩形。
voidsetWindow(const QRect &rectangle)
将painter的窗口设置为给定的矩形rectangle,并启用视图变换。 窗口矩形是视图转换的一部分。该窗口指定逻辑坐标系。它的姊妹视图 viewport()指定了设备坐标系。 默认窗口矩形与设备的矩形相同。
voidsetWindow(int x, int y, int width, int height)
将painter的窗口设置为从(x,y)开始并具有给定宽度和高度的矩形。
voidsetWorldMatrixEnabled(bool enable)
如果enable为true,则启用转换;如果enable为false,则禁用转换。世界变换矩阵不变。
voidsetWorldTransform(const QTransform &matrix, bool combine = false)
设置世界变换矩阵。如果combine为true,则指定的矩阵与当前矩阵合并;否则它替换当前矩阵。
voidshear(qreal sh, qreal sv)
通过(sh,sv)剪切坐标系。
voidstrokePath(const QPainterPath &path, const QPen &pen)
用pen指定的钢笔绘制路径的轮廓(笔画)
booltestRenderHint(QPainter::RenderHint hint) const
如果设置了提示,则返回true否则返回false。
const QTransform &transform() const
worldTransform()的别名。返回世界变换矩阵。
voidtranslate(const QPointF &offset)
voidtranslate(const QPoint &offset)
按照给定的偏移量平移坐标系;即给定的偏移量加到点上。
voidtranslate(qreal dx, qreal dy)
通过向量(dx,dy)平移坐标系。
boolviewTransformEnabled() const
如果启用了视图转换,则返回true否则返回false。
QRectviewport() const
返回视区矩形。
QRectwindow() const
返回窗口矩形。
boolworldMatrixEnabled() const
如果启用了世界变换,则返回true否则返回false。
const QTransform &worldTransform() const
返回世界变换矩阵。

<<<返回根页面

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值