通过Qconicalgradient绘制一个弧而不是一个圆圈

时间:2014-09-08 07:12:56

标签: c++ qt gradient

我想将规范渐变添加到我的圆圈中的特定弧 但当我使用QCanonicalGradient时,我的所有圆圈都将被填充,我试图使其他部分透明,但规范的渐变内插在我希望透明的其他部分之间, 你能帮我吗,我怎样才能用规范的渐变来插入特定的弧? 先感谢您 这是我的代码: (我想在m_start和m_end之间进行插值)

QConicalGradient gradient( QPointF( m_xActualOuterRadius, m_yActualOuterRadius ), 0.0);
gradient.setColorAt(0.0, Qt::transparent);
gradient.setColorAt(m_startColor, Qt::transparent);
gradient.setColorAt(m_startColor, m_foregroundColor);
gradient.setColorAt(m_endColor, m_foregroundColor.lighter());
gradient.setColorAt(1.0, Qt::transparent);

1 个答案:

答案 0 :(得分:0)

drawPie()中使用QPainter方法,其中QBrush已安装渐变。

例如(我在pixmap上画画,但你可以选择别的东西):

QPixmap pixmap(325,215);

QPainter p(&pixmap);//we will paint on pixmap

QConicalGradient gradient( QPointF( 50, 50 ), 0.0);//your gradient
gradient.setColorAt(0.0, Qt::blue);//colors which you want
gradient.setColorAt(0.2, Qt::yellow);
gradient.setColorAt(0.4, Qt::red);
gradient.setColorAt(0.75,Qt::green);
gradient.setColorAt(1.0, Qt::magenta);
p.setBrush(QBrush(gradient));//set brush, it is our background and it will be gradient

    QRectF rectangle(10.0, 20.0, 80.0, 60.0);//preparation for drawPie method
     int startAngle = 30 * 16;
     int spanAngle = 120 * 16;
//it is from Qt documentstion, you can find best values for you
     p.drawPie(rectangle, startAngle, spanAngle);

    label->setPixmap(pixmap); //just show pixmap in label