zoukankan      html  css  js  c++  java
  • Qt 2D绘图 渐变填充(三种渐变方式)

    在qt中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变。如果能熟练应用它们,就能设计出炫目的填充效果。


    线性渐变:

    1.更改函数如下:

    void Dialog::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        QLinearGradient linearGradient(100,150,300,150);
        //从点(100,150)开始到点(300,150)结束,确定一条直线
        linearGradient.setColorAt(0,Qt::red);
        linearGradient.setColorAt(0.2,Qt::black);
        linearGradient.setColorAt(0.4,Qt::yellow);
        linearGradient.setColorAt(0.6,Qt::white);
        linearGradient.setColorAt(0.8,Qt::green);
        linearGradient.setColorAt(1,Qt::blue);
        //将直线开始点设为0,终点设为1,然后分段设置颜色
        painter.setBrush(linearGradient);
        painter.drawRect(100,100,200,100);
        //绘制矩形,线性渐变线正好在矩形的水平中心线上
    }

    效果如下:

    圆形渐变:

    1.更改函数内容如下:

       QRadialGradient radialGradient(200,100,100,200,100);
       //其中参数分别为圆形渐变的圆心(200,100),半径100,和焦点(200,100)
        //这里让焦点和圆心重合,从而形成从圆心向外渐变的效果
        radialGradient.setColorAt(0,Qt::black);
        radialGradient.setColorAt(1,Qt::yellow);
        //渐变从焦点向整个圆进行,焦点为起始点0,圆的边界为1
        QPainter painter(this);
        painter.setBrush(radialGradient);
        painter.drawEllipse(100,0,200,200);
       //绘制圆,让它正好和上面的圆形渐变的圆重合

    效果如下:

    2.要想改变填充的效果,只需要改变焦点的位置和渐变的颜色位置即可。

    改变焦点位置:QRadialGradient radialGradient(200,100,100,100,100);

    效果如下:

    锥形渐变:

    1.更改函数内容如下:

    //圆锥渐变
        QConicalGradient conicalGradient(50,50,0);
        //圆心为(50,50),开始角度为0
        conicalGradient.setColorAt(0,Qt::green);
        conicalGradient.setColorAt(1,Qt::white);
       //从圆心的0度角开始逆时针填充
        QPainter painter(this);
        painter.setBrush(conicalGradient);
        painter.drawEllipse(0,0,100,100);

    效果如下:

    2.可以更改开始角度,来改变填充效果

    QConicalGradient conicalGradient(50,50,30);

    开始角度设置为30度,效果如下:

    其实三种渐变的设置都在于焦点和渐变颜色的位置,如果想设计出漂亮的渐变效果,还要有美术功底啊!

    http://www.cnblogs.com/bingcaihuang/archive/2010/12/01/1893522.html

  • 相关阅读:
    plt.annotate() 在图中标注文字
    numpy 的 ravel() 和 flatten() 扁平化函数
    springboot 国际化
    springboot 日志
    springboot render 和 重定向
    将jar包 引入到maven
    requests 上传图片加额外参数
    java 占位符
    springboot JSR303 后端数据校验
    Python入门学习笔记10:函数式编程:匿名函数、高阶函数、装饰器
  • 原文地址:https://www.cnblogs.com/findumars/p/6152931.html
Copyright © 2011-2022 走看看