本页内容

QCanvasImagePattern Class

QCanvasImagePattern 是一种用于绘制图像图案的画笔。更多内容...

标题: #include <QCanvasImagePattern>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
自: Qt 6.11

公共函数

QCanvasImagePattern(const QCanvasImage &image)
QCanvasImagePattern(const QCanvasImage &image, QPointF startPosition, QSizeF imageSize)
QCanvasImagePattern(const QCanvasImage &image, qreal startX, qreal startY, qreal imageWidth, qreal imageHeight)
QCanvasImagePattern(const QCanvasImagePattern &)
QCanvasImagePattern(QCanvasImagePattern &&)
QCanvasImage image() const
QSizeF imageSize() const
qreal rotation() const
void setImage(const QCanvasImage &image)
void setImageSize(qreal width, qreal height)
void setImageSize(QSizeF size)
void setRotation(qreal rotation)
void setStartPosition(qreal x, qreal y)
void setStartPosition(QPointF point)
void setTintColor(QColor color)
QPointF startPosition() const
QColor tintColor() const
operator QVariant() const
bool operator!=(const QCanvasImagePattern &lhs, const QCanvasImagePattern &rhs)
QDataStream &operator<<(QDataStream &stream, const QCanvasImagePattern &pattern)
bool operator==(const QCanvasImagePattern &lhs, const QCanvasImagePattern &rhs)
QDataStream &operator>>(QDataStream &stream, QCanvasImagePattern &pattern)

详细说明

QCanvasImagePattern 是一种用于绘制图像图案的画笔。若要将QCanvasImage 用作图案,应启用某些重复标志,例如QCanvasPainter::ImageFlag::Repeat 。

以下是一个简单示例:

// Setup 2 image patterns
static QImage image1(":/pattern2.png");
static QImage image2(":/pattern3.png");
auto flags = QCanvasPainter::ImageFlag::Repeat |
             QCanvasPainter::ImageFlag::GenerateMipmaps;
QCanvasImage bg1 = painter.addImage(image1, flags);
QCanvasImage bg2 = painter.addImage(image2, flags);
QCanvasImagePattern ip1(bg1, 0, 0, 64, 64);
QCanvasImagePattern ip2(bg2, 0, 0, 32, 32);
// Fill and stroke round rectangle with
// these image pattern brushes.
painter.beginPath();
painter.roundRect(50, 50, 180, 180, 40);
painter.setFillStyle(ip1);
painter.setStrokeStyle(ip2);
painter.fill();
painter.setLineWidth(20);
painter.stroke();

呈圆角方形,铺有同心圆图案的瓷砖,边缘饰有绿色斜条纹边框

注意: 使用图像图案时, 图像通常会被缩放至较小尺寸,此时为所使用的QCanvasImage 设置QCanvasPainter::ImageFlag::GenerateMipmaps 参数,有助于获得平滑的图案效果。

成员函数文档

QCanvasImagePattern::QCanvasImagePattern(const QCanvasImage &image)

构建一个图像图案。该图案将使用image 。请注意,image 通常应至少设置QCanvasPainter::ImageFlag::Repeat 标志。图案起始位置为(0, 0),图案尺寸为(100, 100)。图案角度为0.0,色调颜色为白色(不进行色调调整)。

QCanvasImagePattern::QCanvasImagePattern(const QCanvasImage &image, QPointF startPosition, QSizeF imageSize)

使用image 构建图像图案,起始位置为startPosition ,并在imageSize 处绘制图像。请注意,image 通常应至少设置QCanvasPainter::ImageFlag::Repeat 标志。

另请参阅 setStartPosition() 和setImageSize()。

QCanvasImagePattern::QCanvasImagePattern(const QCanvasImage &image, qreal startX, qreal startY, qreal imageWidth, qreal imageHeight)

使用image 构建图像图案,起始点为startX 、startY ,并在imageWidth 、imageHeight 处绘制图像。请注意,image 通常应至少设置QCanvasPainter::ImageFlag::Repeat 标志。

另请参阅 setRotation() 和setTintColor()。

QCanvasImagePattern::QCanvasImagePattern(const QCanvasImagePattern &)

销毁图像图案。

[constexpr noexcept default] QCanvasImagePattern::QCanvasImagePattern(QCanvasImagePattern &&)

通过Move构造一个QCanvasImagePattern 实例。

QCanvasImage QCanvasImagePattern::image() const

返回该图案的图像。

另请参阅 setImage()。

QSizeF QCanvasImagePattern::imageSize() const

返回 pattern 中单张图像的大小。

另请参阅 setImageSize()。

qreal QCanvasImagePattern::rotation() const

返回图案的旋转角度(单位为弧度)。

另请参阅 setRotation()。

void QCanvasImagePattern::setImage(const QCanvasImage &image)

将图案的图像设置为image 。注意:在图像图案中使用时,通常应为该图像设置Repeat 标志。

另请参阅 image()。

void QCanvasImagePattern::setImageSize(qreal width, qreal height)

将模式中单张图片的大小设置为 (width,height)。

另请参阅 imageSize()。

void QCanvasImagePattern::setImageSize(QSizeF size)

将模式中单张图片的大小设置为size 。

这是一个重载函数。

void QCanvasImagePattern::setRotation(qreal rotation)

将图案旋转角度设置为rotation (单位为弧度)。旋转以图像startPosition()为中心进行。默认值为0.0 ,表示不旋转图像。

另请参阅 rotation()。

void QCanvasImagePattern::setStartPosition(qreal x, qreal y)

将图像图案的起始点设置为 (x,y)。起始位置指图案中图像的左上角。随后,图案将从该位置向所有方向延伸(如果已设置图像Repeat 标志)。

另请参阅 startPosition()。

void QCanvasImagePattern::setStartPosition(QPointF point)

将图像图案的起始点设置为point 。起始位置指图案中图像的左上角。随后,图案将从该位置向外延伸至所有位置(如果已设置“Repeat ”标志)。

这是一个重载函数。

void QCanvasImagePattern::setTintColor(QColor color)

将图案的色调颜色设置为color 。在着色器中,图案图像的颜色将与该色调颜色相乘。默认值为白色,表示不进行色调调整。

注意:若要 全局设置透明度,请使用QCanvasPainter::setGlobalAlpha()

另请参阅 tintColor()。

QPointF QCanvasImagePattern::startPosition() const

返回图像图案的起始点。

另请参阅 setStartPosition()。

QColor QCanvasImagePattern::tintColor() const

返回图案的色调颜色。

另请参阅 setTintColor()。

QCanvasImagePattern::operator QVariant() const

将图像模式作为QVariant 返回。

相关的非成员

[noexcept] bool operator!=(const QCanvasImagePattern &lhs, const QCanvasImagePattern &rhs)

如果图像模式lhs 与rhs 不一致,则返回true ;否则返回false 。

另请参阅 operator==()。

QDataStream &operator<<(QDataStream &stream, const QCanvasImagePattern &pattern)

将给定的pattern 写入给定的stream ,并返回对stream 的引用。

另请参阅 《Qt 数据类型的序列化》。

[noexcept] bool operator==(const QCanvasImagePattern &lhs, const QCanvasImagePattern &rhs)

如果图像模式lhs 等于rhs ,则返回true ;否则返回false 。

另请参阅 operator!=()。

QDataStream &operator>>(QDataStream &stream, QCanvasImagePattern &pattern)

从给定的stream 中读取指定的pattern ,并返回对stream 的引用。

另请参阅 《Qt 数据类型的序列化》。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.