Qt绘图之画刷QBrush

画刷QBrush

画刷主要作用于封闭图形里面的填充

可以设置画刷的颜色和样式

颜色

// 获取和设置画刷的颜色
const QColor &color() const
void setColor(const QColor &color)

 样式

// 获取和设置画刷的样式
Qt::BrushStyle style() const
void setStyle(Qt::BrushStyle style)

Qt::BrushStyle是一个枚举,有多种取值,挑几个值得说的介绍

  •  Qt::BrushStyle::SolidPattern(默认就是SolidPattern,实心填充)

  • Qt::BrushStyle::CrossPattern(网格填充)

  • Qt::BrushStyle::LinearGradientPattern(线性渐变)

获得一个线性渐变的画刷代码如下:

//需要先构造线性渐变对象
//参数1:渐变开始点,参数2:渐变结束点
//此处y坐标都是50.可见是沿着X轴进行横向渐变,纵向渐变就X坐标相同
//可任意指定两个点,沿着这两个点形成的直线进行渐变
QLinearGradient linear_gradient(QPoint(0,50),QPoint(300,50));
linear_gradient.setColorAt(0.0,Qt::green);//最开始为绿色
linear_gradient.setColorAt(0.2,Qt::blue);//20%处变为蓝色
linear_gradient.setColorAt(1.0,Qt::yellow);//最后变为黄色
//通过构造函数得到渐变填充的画刷
QBrush brush(linear_gradient);
brush.setColor(QColor(0,255,0));
brush.setStyle(Qt::BrushStyle::LinearGradientPattern);
            
painter.setBrush(brush);
  • Qt::BrushStyle::RadialGradientPattern(径向渐变)

获得一个径向渐变的画刷代码如下:

//需要先构造径向渐变对象
//参数1:渐变开始的圆心,参数2:渐变的半径,参数3:焦点偏移点(也可不指定)
QRadialGradient radial_gradient(QPoint(150,110),100);
//指定焦点偏移(效果上面图2)
//QRadialGradient radial_gradient(QPoint(150,110),100,QPoint(170,130));
radial_gradient.setColorAt(0.0,Qt::green);
radial_gradient.setColorAt(0.8,Qt::blue);
radial_gradient.setColorAt(1.0,Qt::yellow);

//通过构造函数得到径向渐变填充的画刷
QBrush brush(radial_gradient);
brush.setColor(QColor(0,255,0));
brush.setStyle(Qt::BrushStyle::RadialGradientPattern);

painter.setBrush(brush);
  • Qt::BrushStyle::ConicalGradientPattern(锥形渐变)

获得一个锥形渐变的画刷代码如下:

//需要先构造锥形渐变对象
//参数1:圆心,参数2:开始渐变的角度
QConicalGradient conical_gradient(QPoint(150,100),90);
conical_gradient.setColorAt(0.0,Qt::green);
conical_gradient.setColorAt(0.5,Qt::blue);
conical_gradient.setColorAt(1.0,Qt::yellow);

//通过构造函数得到锥形渐变填充的画刷
QBrush brush(conical_gradient);
brush.setColor(QColor(0,255,0));
brush.setStyle(Qt::BrushStyle::ConicalGradientPattern);

painter.setBrush(brush);
  • Qt::BrushStyle::TexturePattern(纹理填充)

 

获得一个纹理填充的画刷代码如下:

//通过构造函数得到纹理填充的画刷,需要一张图片
QBrush brush(QPixmap(":/11.jpeg"));
brush.setColor(QColor(0,255,0));
brush.setStyle(Qt::BrushStyle::TexturePattern);

painter.setBrush(brush);
  •  还可以为Qt::BrushStyle::NoBrush,没有任何填充

Qt官方文档举例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值