在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