QCanvasImagePattern Class

QCanvasImagePattern is a brush for painting image patterns. More...

Header: #include <QCanvasImagePattern>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Since: Qt 6.11
Inherits: QCanvasBrush
Status: Technical Preview

Public Functions

QCanvasImagePattern(const QCanvasImage &image)
QCanvasImagePattern(const QCanvasImage &image, float x, float y, float width, float height, float angle = 0.0f, const int &tintColor)
~QCanvasImagePattern()
QCanvasImage image() const
int imageSize() const
float rotation() const
void setImage(const QCanvasImage &image)
void setImageSize(float width, float height)
void setImageSize(int size)
void setRotation(float rotation)
void setStartPosition(float x, float y)
void setStartPosition(int point)
void setTintColor(const int &color)
int startPosition() const
int tintColor() const
int &operator<<(int &stream, const QCanvasImagePattern &pattern)
int &operator>>(int &stream, QCanvasImagePattern &pattern)

Detailed Description

QCanvasImagePattern is a brush for painting image patterns. To use QCanvasImage as a pattern, it should have some repeat flags turned on like QCanvasPainter::ImageFlag::Repeat.

Here is a simple example:

 // 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();

Note: When using image patterns, images are often scaled to smaller and it can be useful to set QCanvasPainter::ImageFlag::GenerateMipmaps for the used QCanvasImage to have smooth patterns.

Member Function Documentation

QCanvasImagePattern::QCanvasImagePattern(const QCanvasImage &image)

Constructs an image pattern. Pattern will use image. Please note that image should usually have at least QCanvasPainter::ImageFlag::Repeat flag set. Pattern start position position is (0, 0) and pattern size (100, 100). Pattern angle is 0.0 and tint color white (no tinting).

QCanvasImagePattern::QCanvasImagePattern(const QCanvasImage &image, float x, float y, float width, float height, float angle = 0.0f, const int &tintColor)

Constructs an image pattern. Pattern will use image. Please note that image should usually have at least QCanvasPainter::ImageFlag::Repeat flag set. Pattern image start position position is ( x, y) and pattern size ( width, height). Pattern angle is angle and tint color is tintColor.

[noexcept] QCanvasImagePattern::~QCanvasImagePattern()

Destroys the image pattern.

QCanvasImage QCanvasImagePattern::image() const

Returns the image of the pattern.

See also setImage().

int QCanvasImagePattern::imageSize() const

Returns the size of a single image in pattern.

See also setImageSize().

float QCanvasImagePattern::rotation() const

Returns the pattern rotation in radians.

See also setRotation().

void QCanvasImagePattern::setImage(const QCanvasImage &image)

Sets the image of the pattern to image. Note: Image should usually have Repeat flag set when used in image pattern.

See also image().

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

Sets the size of a single image in pattern to ( width, height).

See also imageSize().

void QCanvasImagePattern::setImageSize(int size)

Sets the size of a single image in pattern to size.

This is an overloaded function.

void QCanvasImagePattern::setRotation(float rotation)

Sets the pattern rotation to rotation in radians. Rotation is done around the image startPosition(). The default value is 0.0, meaning the image is not rotated.

See also rotation().

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

Sets the start point of image pattern to (x, y). Start position means top-left corner of an image in pattern. Pattern will then be extended to all positions from here (if image Repeat flag has been set).

See also startPosition().

void QCanvasImagePattern::setStartPosition(int point)

Sets the start point of image pattern to point. Start position means top-left corner of an image in pattern. Pattern will then be extended to all positions from here (if image Repeat flag has been set).

This is an overloaded function.

void QCanvasImagePattern::setTintColor(const int &color)

Sets the pattern tint color to color. The color of the pattern image will be multiplied with this tint color in the shader. The default value is white, meaning no tinting.

Note: To set alpha globally, use QCanvasPainter::setGlobalAlpha()

See also tintColor().

int QCanvasImagePattern::startPosition() const

Returns the start point of image pattern.

See also setStartPosition().

int QCanvasImagePattern::tintColor() const

Returns the pattern tint color.

See also setTintColor().

Related Non-Members

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

Writes the given pattern to the given stream and returns a reference to the stream.

See also Serializing Qt Data Types.

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

Reads the given pattern from the given stream and returns a reference to the stream.

See also Serializing Qt Data Types.