• QGradient(渐变填充)


    QGradient(渐变填充)

    QGradient和QBrush一起使用来指定渐变填充。

    Qt支持的填充:

    • 线性渐变(linear gradient),在起点和终点之间插值颜色
    • 辐射渐变(radial gradient),在焦点和围绕它的圆的端点之间插入颜色
    • 锥形渐变(Conical gradient),在中心和焦点圆之间插值颜色

     QLinearGradient(线性渐变)

    线性渐变在起点和终点之间插值颜色

    构造函数:

     常用的函数:

    setStart()设置起点
    start()返回起点
    setFinalStop()设置终点
    finalStop()返回终点
    setSpread()设置扩散方式
    setColorAt()设置颜色

    需要注意的是:确定了起始点和结束点之后,会将结束点和起始点平分,起始点位置为0.0,结束点位置为1.0 ,通过比例设置颜色。

    setSpread()设置扩散方式

    QGradient::Spread

    PadSpread垫展(默认)
    ReflectSpread反射传播
    RepeatSpread重复传播

     

    1. void Widget::paintEvent(QPaintEvent *event)//绘画事件
    2. {
    3. QPainter painter(this);
    4. QPen pen;
    5. QVector<qreal> sing;
    6. qreal space=4;//空格数
    7. sing<<1<<space<<3<<space<<9<<space<<27<<space<<9<<space;//数量必须为双数
    8. pen.setDashPattern(sing);//设置笔的样式
    9. pen.setWidth(2);//设置笔的宽度
    10. painter.setPen(pen);//修改画家的笔
    11. QLinearGradient lineg(100,100,200,200);//创建一个线性渐变
    12. //在指定位置插入颜色,范围0-1
    13. lineg.setColorAt(0,Qt::red);
    14. lineg.setColorAt(0.5,Qt::cyan);
    15. lineg.setColorAt(1,Qt::green);
    16. lineg.setSpread(QGradient::RepeatSpread);//设置扩散方式
    17. painter.setBrush(lineg);//设置画刷
    18. painter.drawRect(200,200,100,100);//绘制矩形
    19. }

     

     QRadialGradient(辐射渐变)

    简单的径向渐变在焦点和围绕它的圆的端点之间插入颜色。扩展的径向渐变在焦点圆和中心圆之间插值颜色。由两个圆定义的圆锥体外部的点将是透明的。对于简单的径向渐变,焦点被调整为位于中心圆内,而焦点可以在扩展的径向渐变中具有任何位置。

    构造函数:

    QRadiaGradient(const QPointF ¢er, qreal centerRadius,const QPointF &focalPoint, qreal focalRadius

    • center  圆心
    • centerRadius  圆的半径
    • focalPoint   焦点
    • focalRadius   焦点半径
    • 焦点位置为0,圆环位置为1,然后在中间穿插颜色

    常用的函数:

    setSpread()设置渐变方式
    centerRadius()返回圆的半径
    center()返回中心坐标
    focalRadius()返回焦点半径
    focalPoint()返回焦点坐标
    setxxxx可以设置以上的坐标和半径

    setSpread()设置渐变方式: 

    QGradient::Spread

     

    1. void Widget::paintEvent(QPaintEvent *event)//绘画事件
    2. {
    3. QPainter painter(this);
    4. QPen pen;
    5. QVector<qreal> sing;
    6. qreal space=4;//空格数
    7. sing<<1<<space<<3<<space<<9<<space<<27<<space<<9<<space;//数量必须为双数
    8. pen.setDashPattern(sing);//设置笔的样式
    9. pen.setWidth(2);//设置笔的宽度
    10. painter.setPen(pen);//修改画家的笔
    11. QRadialGradient radial(QPoint(100,100),20,QPoint(150,150),20);
    12. radial.setColorAt(0,Qt::red);
    13. radial.setColorAt(0.5,Qt::cyan);
    14. radial.setColorAt(1,Qt::green);
    15. radial.setSpread(QGradient::RepeatSpread);
    16. painter.setBrush(radial);
    17. painter.drawRect(200,200,100,100);//绘制矩形
    18. }

     QConicalGradient(锥形渐变)

     圆锥渐变围绕中心点逆时针插值颜色。

    构造函数:

     

     QCoicalGradient(const QPointF &cneter,qreal angle)

    • cneter  中心点
    • angle   角度(0-360)
    • 沿逆时针方向开始的位置为0,旋转一圈后为1

    常用函数:

    setColorAt()

    设置颜色

    setCenter()设置中心点
    setAngle()设置起始位置
    1. void Widget::paintEvent(QPaintEvent *event)//绘画事件
    2. {
    3. QPainter painter(this);
    4. QPen pen;
    5. QVector<qreal> sing;
    6. qreal space=4;//空格数
    7. sing<<1<<space<<3<<space<<9<<space<<27<<space<<9<<space;//数量必须为双数
    8. pen.setDashPattern(sing);//设置笔的样式
    9. pen.setWidth(2);//设置笔的宽度
    10. painter.setPen(pen);//修改画家的笔
    11. QConicalGradient conical(QPoint(200,200),60);
    12. conical.setColorAt(0.5,Qt::cyan);
    13. conical.setColorAt(0.9,Qt::black);
    14. painter.setBrush(conical);
    15. painter.drawEllipse(200,200,100,100);//绘制圆
    16. }

     

  • 相关阅读:
    grafana&prometheus 快速配置报警规则及报警接收
    排序算法1:冒泡排序、快速排序、插入排序
    python re.findall和re.search同样的正则表达式,为什么规则不一样??
    LeetCode 视频演示:0654. 最大二叉树(视频做了近2h~_~)
    Spring Boot常规知识整理
    LeetCode每日一题——764. 最大加号标志
    牛客网——Java刷题篇
    1731. 每位经理的下属员工数量
    Spark任务优化分析
    Java数据结构与算法(完全背包)
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/127934344