一、画刷样式
一图流:
二、成员函数
1、QBrush(const QGradient &gradient)
用渐变构造画刷。
void Widget::paintEvent(QPaintEvent *event)
{
auto rect = event->rect();
QPainter painter(this);
painter.setBrush(QGradient(QGradient::NewYork));
painter.drawRect(rect);
}
2、QBrush(const QPixmap &pixmap)
QBrush(const QImage &image)
用纹理图案构造画刷,画刷风格设为Qt::TexturePattern。
painter.setBrush(QImage(":/D:/xx.jpeg"));
painter.drawRect(rect);
3、QBrush(Qt::GlobalColor color, const QPixmap &pixmap)
QBrush(const QColor &color, const QPixmap &pixmap)
颜色仅对二值图有效(QBitmap继承自QPixmap)。
painter.setBrush(QBrush(Qt::red,QPixmap(":/D:/qqq.jpeg")));
painter.drawRect(rect);
painter.setBrush(QBrush(Qt::red,QBitmap(":/D:/qqq.jpeg")));
painter.drawRect(rect);
4、QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern)
QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern)
使用一个颜色和一个画刷样式构造画刷。画刷样式不包括渐变和纹理图案。
painter.setBrush(QBrush(Qt::red,Qt::HorPattern));
painter.drawRect(rect);
5、QBrush(Qt::BrushStyle style)
使用画刷样式构造画刷。
6、QBrush()
构造一个默认的黑色画刷,样式是Qt::NoBrush(不填充图形)。
7、void setColor(const QColor &color) / void setColor(Qt::GlobalColor color)
设置画刷颜色。如果样式是渐变类型那不会起作用,如果样式是Qt::TexturePattern但纹理图案不是二值图也不会起作用。
8、const QColor &color()
获取颜色。
9、const QGradient *gradient()
获取画刷的渐变(如果是渐变类型的话)。
10、bool isOpaque()
判断画刷是否透明。如果出现以下情况,则认为画刷不透明:
- color()的alpha值是255。
- 它的texture()没有alpha通道,也不是QBitmap。
- gradient()中的颜色都有一个255的alpha分量。
- 渐变是辐射渐变类型。
11、void setStyle(Qt::BrushStyle style) / Qt::BrushStyle QBrush::style()
设置/返回画刷样式。
12、void setTexture(const QPixmap &pixmap)
设置画刷纹理图案。样式设置为Qt::TexturePattern。当前的笔刷颜色仅对二值图有效。
13、QPixmap texture()
返回画刷纹理图案,未设置则返回空图像。
14、void setTextureImage(const QImage &image)
用QImage设置画刷纹理图案。样式设置为Qt::TexturePattern。画刷颜色对它不会有影响。
QBrush brush;
brush.setColor(Qt::red);
brush.setTextureImage(QImage(":/D:/qqq.jpeg"));
painter.setBrush(brush);
painter.drawRect(rect);
如果要使画刷颜色对QImage设置的纹理图案有影响,可以设置:
QBrush brush;
brush.setColor(Qt::red);
brush.setTexture(QBitmap::fromImage(QImage(":/D:/qqq.jpeg")));
painter.setBrush(brush);
painter.drawRect(rect);
15、QImage textureImage()
返回自定义画刷纹理图案,如果未设置自定义画刷纹理图案,则返回空图像。如果纹理图案是用QPixmap设置的,它将被转换为QImage。
16、QTransform transform() const / void setTransform(const QTransform &matrix)
返回 / 设置笔刷的当前变换矩阵。
QTransform tf;
tf.scale(0.5,0.5);
brush.setTransform(tf);