Qt扫盲-QBrush理论使用总结

一、概述

QBrush类定义了由 QPainter 绘制的形状的填充模式。画笔有样式、颜色、渐变和纹理。

brush style() 使用Qt::BrushStyle 枚举定义填充模式。默认的笔刷样式是 Qt::NoBrush(取决于你如何构造一个笔刷)。

1. 填充模式

这种风格告诉QPainter 不要填充形状。填充的标准样式是Qt::SolidPattern。可以在使用适当的构造函数创建笔刷时设置样式,此外,setStyle()函数还提供了在笔刷构造完成后更改样式的方法。

在这里插入图片描述

2. 笔刷颜色

brush color()定义了填充图案的颜色。颜色可以是Qt的预定义颜色之一,Qt::GlobalColor,或任何其他自定义的QColor。可以分别使用color()和setColor()函数检索和修改当前设置的颜色。

gradient() 定义了当当前样式为 Qt::LinearGradientPattern、Qt::RadialGradientPattern 或 Qt::ConicalGradientPattern 时 使用的渐变填充。渐变刷是通过在创建QBrush时将QGradient作为构造函数参数来创建的。

Qt提供了三种不同的梯度:QLinearGradient, QConicalGradient和QRadialGradient——它们都继承了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);

渐变的效果就像Qt Designer 里面的东西。
在这里插入图片描述

3. 纹理

texture()定义当前样式为Qt::TexturePattern时使用的像素图。您可以通过在创建笔刷时提供像素图或使用setTexture()来创建带有纹理的笔刷。

注意,不管之前的样式设置如何,应用setTexture()会使style() == Qt::TexturePattern。同样,如果样式是渐变的,调用setColor()也不会有什么不同。如果样式是Qt::TexturePattern样式,除非当前纹理是QBitmap,否则情况也是如此。

如果画笔是完全不透明的,isOpaque() 函数返回true,否则返回false。画笔被认为是不透明的如果:

  • color()的alpha分量是255。
  • 它的纹理()没有alpha通道,也不是QBitmap。
  • gradient()中的颜色都有一个255的alpha分量。

要指定线条和轮廓的样式和颜色,使用QPainter的笔结合Qt::PenStyle和Qt::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::GlobalColor

这个是Qt预定义的一些颜色

名称 含义
Qt::white 3 White (#ffffff)
Qt::black 2 Black (#000000)
Qt::red 7 Red (#ff0000)
Qt::darkRed 13 Dark red (#800000)
Qt::green 8 Green (#00ff00)
Qt::darkGreen 14 Dark green (#008000)
Qt::blue 9 Blue (#0000ff)
Qt::darkBlue 15 Dark blue (#000080)
Qt::cyan 10 Cyan (#00ffff)
Qt::darkCyan 16 Dark cyan (#008080)
Qt::magenta 11 Magenta (#ff00ff)
Qt::darkMagenta 17 Dark magenta (#800080 )
Qt::yellow 12 Yellow (#ffff00)
Qt::darkYellow 18 Dark yellow (#808000)
Qt::gray 5 Gray (#a0a0a4)
Qt::darkGray 4 Dark gray (#808080)
Qt::lightGray 6 Light gray (#c0c0c0)
Qt::transparent 19 a transparent black value (i.e., QColor(0, 0, 0, 0))
Qt::color0 0 0 pixel value (for bitmaps)
Qt::color1 1 1 pixel value (for bitmaps)

猜你喜欢

转载自blog.csdn.net/qq_43680827/article/details/133957824
今日推荐