文章目录
前言
在Qt中锥形渐变属于是最简单的渐变。只需要定义一个中心点,和一个其实角度,按照逆时针方向进行渐变,而且没有spread设置
一、锥形渐变是什么?
QConicalGradient 锥形渐变插值围绕 中心点 逆时针 插值。
QConicalGradient 使用QGradientStop类型的停止点(即位置和颜色)定义渐变中的颜色。 使用QGradient :: setColorAt()或QGradient :: setStops()函数来定义停止点。 渐变的完整停止点集描述了渐变区域应如何填充。 如果未指定任何停止点,则使用0处黑色到1处白色的渐变。
构造函数:QConicalGradient(const QPointF ¢er, 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中的锥形渐变的功能