QBrush类

The QBrush class defines the fill pattern of shapes drawn by QPainter. 更多...

头文件 #include <QBrush>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

公共函数

QBrush()
QBrush(Qt::BrushStyle style)
QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern)
QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern)
QBrush(const QColor &color, const QPixmap &pixmap)
QBrush(Qt::GlobalColor color, const QPixmap &pixmap)
QBrush(const QPixmap &pixmap)
QBrush(const QImage &image)
QBrush(const QGradient &gradient)
QBrush(const QBrush &other)
~QBrush()
const QColor &color() const
const QGradient *gradient() const
boolisOpaque() const
voidsetColor(const QColor &color)
voidsetColor(Qt::GlobalColor color)
voidsetStyle(Qt::BrushStyle style)
voidsetTexture(const QPixmap &pixmap)
voidsetTextureImage(const QImage &image)
voidsetTransform(const QTransform &matrix)
Qt::BrushStylestyle() const
voidswap(QBrush &other)
QPixmaptexture() const
QImagetextureImage() const
QTransformtransform() const
QVariantoperator QVariant() const
booloperator!=(const QBrush &brush) const
QBrush &operator=(const QBrush &brush)
QBrush &operator=(QBrush &&other)
booloperator==(const QBrush &brush) const
QDataStream &operator<<(QDataStream &stream, const QBrush &brush)
QDataStream &operator>>(QDataStream &stream, QBrush &brush)

详细信息

画笔具有样式、颜色、渐变和纹理。

画笔的 style() 使用 Qt::BrushStyle 枚举定义填充模式。默认画笔样式为 Qt::NoBrush(取决于如何构造画笔)。这种样式告诉画家不要填充图形。填充的标准样式是 Qt::SolidPattern。可以在创建画笔时使用适当的构造函数设置样式,并且 setStyle() 函数提供了在画笔构造后更改样式的手段。

Brush Styles

画笔的 color() 定义填充模式的颜色。颜色可以是 Qt 预定义的颜色之一,Qt::GlobalColor,或任何其他自定义的 QColor。可以通过 color() 和 setColor() 函数检索和更改当前设置的颜色。

gradient() 定义在当前样式是 Qt::LinearGradientPatternQt::RadialGradientPatternQt::ConicalGradientPattern 时使用的渐变填充。通过在创建 QBrush 时将 QGradient 作为构造函数参数,可以创建渐变画笔。Qt 提供了三种不同的渐变:QLinearGradientQConicalGradientQRadialGradient -它们都继承自 QGradient

    QRadialGradient gradient(50, 50, 50, 50, 50);
    gradient.setColorAt(0, QColor::fromRgbF(0, 1, 0, 1));
    gradient.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0));

    QBrush brush(gradient);

texture() 定义在当前样式是 Qt::TexturePattern 时使用的位图。您可以通过在创建画笔时提供位图或使用 setTexture() 来创建具有纹理的画笔。

请注意,应用 setTexture() 使 style() == Qt::TexturePattern,无论之前的样式设置如何。此外,如果样式是渐变,调用 setColor() 将不会有任何效果。如果样式是 Qt::TexturePattern 样式,除非当前纹理是 QBitmap,也是如此。

isOpaque() 函数如果在画笔完全不透明的情况下返回 true,否则返回 false。如果画笔的颜色、纹理和渐变中的颜色都具有 alpha 分量为 255,则该画笔被认为是完全不透明的。

  • 颜色() 的 alpha 成分为 255。
  • 它的 texture() 没有alpha通道且不是 QBitmap
  • 梯度() 中的所有颜色都具有 alpha 分量为 255。
描边要指定线段和描边的样式和颜色,请使用 QPainter 的 pen,结合Qt::PenStyleQt::GlobalColor
QPainter painter(this);

painter.setBrush(Qt::cyan);
painter.setPen(Qt::darkCyan);
painter.drawRect(0, 0, 100,100);

painter.setBrush(Qt::NoBrush);
painter.setPen(Qt::darkGreen);
painter.drawRect(40, 40, 100, 100);

请记住,默认情况下,QPainter 在绘制形状时会渲染描边(使用当前设置的笔)。要禁用此行为,请使用painter.setPen(Qt::NoPen)

有关绘画的更多信息,请参阅绘图系统

另见Qt::BrushStyleQPainterQColor

成员函数文档

QBrush::QBrush()

构建一个默认的黑色画笔,样式为Qt::NoBrush(即此画笔不会填充形状)。

QBrush::QBrush(Qt::BrushStyle style)

构建一个具有指定样式的黑色画笔。

另请参阅setStyle

QBrush::QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern)

构建一个具有指定颜色样式的画笔。

另请参阅setColor() 和 setStyle

QBrush::QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern)

构建一个具有指定颜色样式的画笔。

另请参阅setColor() 和 setStyle

QBrush::QBrush(const QColor &color, const QPixmap &pixmap)

构建一个具有指定颜色和存储在pixmap中的自定义图案的画笔。

样式设置为Qt::TexturePattern。颜色仅对QBitmap起作用。

另请参阅setColor() 和 setTexture

QBrush::QBrush(Qt::GlobalColor color, const QPixmap &pixmap)

构建一个具有指定颜色和存储在pixmap中的自定义图案的画笔。

样式设置为Qt::TexturePattern。颜色仅对QBitmap起作用。

另请参阅setColor() 和 setTexture

QBrush::QBrush(const QPixmap &pixmap)

构建一个黑色颜色并设置给定的pixmap纹理的画笔。样式设置为Qt::TexturePattern

另请参阅setTexture

QBrush::QBrush(const QImage &image)

构建一个黑色颜色并设置给定的image纹理的画笔。样式设置为Qt::TexturePattern

另请参阅setTextureImage

QBrush::QBrush(const QGradient &gradient)

基于给定的gradient构建一个画笔。

画笔样式设置为相应的渐变样式( Qt::LinearGradientPatternQt::RadialGradientPatternQt::ConicalGradientPattern)。

QBrush::QBrush(const QBrush &other)

构建other的副本。

[noexcept] QBrush::~QBrush()

销毁画笔。

const QColor &QBrush::color() const

返回画笔颜色。

另请参阅setColor

const QGradient *QBrush::gradient() const

返回描述此画笔的渐变。

bool QBrush::isOpaque() const

如果画笔是完全不透明的,则返回 true,否则返回 false。如果以下条件满足,则画笔被认为是透明的:

  • 颜色() 的 alpha 成分为 255。
  • 它的 texture() 没有alpha通道且不是 QBitmap
  • 梯度() 中的所有颜色都具有 alpha 分量为 255。
  • 它是一个扩展式径向渐变。

void QBrush::setColor(const QColor &color)

将画笔颜色设置为指定的 颜色

注意,如果样式是渐变,则调用 setColor() 不会有任何区别。如果样式是 Qt::TexturePattern 风格,除非当前纹理是 QBitmap,情况也是如此。

另请参阅 颜色

void QBrush::setColor(Qt::GlobalColor color)

这是一个重载函数。

将画笔颜色设置为指定的 颜色

void QBrush::setStyle(Qt::BrushStyle style)

将画笔样式设置为 样式

另请参阅 样式

void QBrush::setTexture(const QPixmap &pixmap)

将画笔位图设置为 位图。样式设置为 Qt::TexturePattern

对于单色位图,即 QPixmap::depth() == 1 (QBitmaps),当前画笔颜色将只起作用。

另请参阅 纹理

void QBrush::setTextureImage(const QImage &image)

将画笔图像设置为 图像。样式设置为 Qt::TexturePattern

请注意,与使用 setTexture() 与 QBitmap 相比,当前画笔颜色对单色图像没有任何影响。如果您想更改单色图像画笔的颜色,可以将图像转换为 QBitmap 使用 QBitmap::fromImage() 并将得到的 QBitmap 设置为纹理,或者改变图像的颜色表条目。

另请参阅 纹理图像setTexture

void QBrush::setTransform(const QTransform &matrix)

矩阵 设置为当前画笔的显式转换矩阵。画笔转换矩阵与 QPainter 转换矩阵合并,以产生最终结果。

另请参阅 转换

Qt::BrushStyle QBrush::style() const

返回画笔样式。

另请参阅setStyle

[noexcept] void QBrush::swap(QBrush &other)

交换画笔 other 与此画笔。此操作非常迅速且永远不会失败。

QPixmap QBrush::texture() const

返回自定义画笔图案,如果没有设置自定义画笔图案,则返回空位图。

另请参阅setTexture

QImage QBrush::textureImage() const

返回自定义画笔图案,如果没有设置自定义画笔图案,则返回空图像。

如果纹理被设置为QPixmap,它将被转换为QImage

另请参阅setTextureImage

QTransform QBrush::transform() const

返回画笔的当前变换矩阵。

另请参阅setTransform

QVariant QBrush::operator QVariant() const

将画笔作为QVariant返回。

bool QBrush::operator!=(const QBrush &brush) const

如果画笔与给定的brush不同,则返回true;否则返回false

如果两个画笔具有不同的样式、颜色、变换,或者根据样式具有不同的位图或渐变,则两个画笔是不同的。

另请参阅operator==

QBrush &QBrush::operator=(const QBrush &brush)

将给定的brush赋值给this画笔,并返回对this画笔的引用。

[noexcept] QBrush &QBrush::operator=(QBrush &&other)

移动赋值other到此QBrush实例。

bool QBrush::operator==(const QBrush &brush) const

如果画笔与给定的brush相等,则返回true;否则返回false

如果两个画笔具有相同的样式、颜色、变换,并且根据样式具有相同的位图或渐变,则两个画笔是相等的。

另请参阅operator!=

相关非成员函数

QDataStream &operator<<(QDataStream &stream, const QBrush &brush)

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

另请参阅序列化 Qt 数据类型

QDataStream &operator>>(QDataStream &stream, QBrush &brush)

从给定的stream读取给定的brush,并返回对stream的引用。

另请参阅序列化 Qt 数据类型

© 2024 The Qt Company Ltd。在本文档中包含的贡献作品的版权归各自所有者所有。提供的文档受自由软件基金会发布的GNU自由文档许可证版本1.3条款许可。Qt及其相关标志是芬兰和/或其他国家/地区的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。