QBrush之径向渐变画刷应用QRadialGradient::Spread

注:QRadialGradient默认的Spread方式为QRadialGradient::Spread::PadSpread,下面代码展示重复及反射的渐变方式。

重复渐变方式,指定不同的半径:

 1 void Widget::paintEvent(QPaintEvent *event)
 2 {
 3     Q_UNUSED(event);
 4 
 5     QPainter painter(this);
 6     painter.fillRect(this->rect(),QBrush(QColor(255,255,255)));
 7     painter.setRenderHint(QPainter::Antialiasing);//抗锯齿
 8 
 9     QRadialGradient radialGradient(this->width()/2,this->height()/2,50,this->width()/2,this->height()/2);
10 //    QRadialGradient radialGradient(this->width()/2,this->height()/2,100,this->width()/2,this->height()/2);
11     radialGradient.setColorAt(0,Qt::green);
12     radialGradient.setColorAt(1.0,Qt::black);
13     radialGradient.setSpread(QRadialGradient::Spread::RepeatSpread);
14     painter.fillRect(this->rect(),QBrush(radialGradient));
15 }

image  image

反射渐变,指定不同的半径

 1 void Widget::paintEvent(QPaintEvent *event)
 2 {
 3     Q_UNUSED(event);
 4 
 5     QPainter painter(this);
 6     painter.fillRect(this->rect(),QBrush(QColor(255,255,255)));
 7     painter.setRenderHint(QPainter::Antialiasing);//抗锯齿
 8 
 9 //    QRadialGradient radialGradient(this->width()/2,this->height()/2,50,this->width()/2,this->height()/2);
10     QRadialGradient radialGradient(this->width()/2,this->height()/2,100,this->width()/2,this->height()/2);
11     radialGradient.setColorAt(0,Qt::green);
12     radialGradient.setColorAt(1.0,Qt::black);
13     radialGradient.setSpread(QRadialGradient::Spread::ReflectSpread);
14     painter.fillRect(this->rect(),QBrush(radialGradient));
15 }

image  image

反射渐变、重复渐变附加偏心

 1 void Widget::paintEvent(QPaintEvent *event)
 2 {
 3     Q_UNUSED(event);
 4 
 5     QPainter painter(this);
 6     painter.fillRect(this->rect(),QBrush(QColor(255,255,255)));
 7     painter.setRenderHint(QPainter::Antialiasing);//抗锯齿
 8 
 9     QRadialGradient radialGradient(this->width()/2,this->height()/2,50,this->width()/2,this->height()/2-40);
10     radialGradient.setColorAt(0,Qt::green);
11     radialGradient.setColorAt(1.0,Qt::black);
12     radialGradient.setSpread(QRadialGradient::Spread::RepeatSpread);
13 //    radialGradient.setSpread(QRadialGradient::Spread::ReflectSpread);
14     painter.fillRect(this->rect(),QBrush(radialGradient));
15 }

image  image

posted @ 2026-01-27 16:42  左边的翼  阅读(3)  评论(0)    收藏  举报