Qt 渐变(六): 锥形渐变的使用


前言

在Qt中锥形渐变属于是最简单的渐变。只需要定义一个中心点,和一个其实角度,按照逆时针方向进行渐变,而且没有spread设置


一、锥形渐变是什么?

QConicalGradient 锥形渐变插值围绕 中心点 逆时针 插值。

QConicalGradient 使用QGradientStop类型的停止点(即位置和颜色)定义渐变中的颜色。 使用QGradient :: setColorAt()或QGradient :: setStops()函数来定义停止点。 渐变的完整停止点集描述了渐变区域应如何填充。 如果未指定任何停止点,则使用0处黑色到1处白色的渐变。

构造函数:QConicalGradient(const QPointF &center, qreal angle)

  • center :中心点的位置
  • angle:起始角度 ,0~360之间
  • 停止点,可以用 角颜色来形容,使用QGradient :: setColorAt()来设置

二、示例代码

在这里插入图片描述

代码如下(示例):

void Widget::paintEvent(QPaintEvent *)
{
    int centerX = width() / 2;
    int centerY = height() / 2;
    int size = qMin(centerX,centerY)*0.8;
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing);
    painter.setPen(Qt::NoPen);

    //锥形渐变
    QConicalGradient g(centerX,centerY,90);
    double s = 6.0;
    g.setColorAt(0/s,QColor("red"));
    g.setColorAt(1/s,QColor("yellow"));
    g.setColorAt(2/s,QColor("lime"));
    g.setColorAt(3/s,QColor("aqua"));
    g.setColorAt(4/s,QColor("blue"));
    g.setColorAt(5/s,QColor("magenta"));
    g.setColorAt(6/s,QColor("red"));

    painter.setBrush(g);
    painter.drawEllipse(centerX-size,centerY-size,size*2,size*2);

    //径向渐变
    QRadialGradient gr(centerX,centerY,size);
    gr.setColorAt(0,QColor("gray"));
    gr.setColorAt(1,QColor(Qt::transparent));
    painter.setBrush(gr);
    painter.drawEllipse(centerX-size,centerY-size,size*2,size*2);
}

总结

本文仅仅简单介绍了QConicalGradient的构造函数和简单的使用。另外,Qt的锥形渐变不适合用来绘制饼图,角颜色设置需要重复,反而增加了代码的复杂图。建议用基本绘制方法QPainter::drawPie()来实现。希望Qt后期能够改进这个类,能实现CSS中的锥形渐变的功能

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值