Q 理论使用总结
- 一、概述
-
- [1. 填充模式](#1. 填充模式)
- [2. 笔刷颜色](#2. 笔刷颜色)
- [3. 纹理](#3. 纹理)
- [二、 Qt::GlobalColor](#二、 Qt::GlobalColor)
一、概述
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。
cpp
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:
cpp
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) |