Qt學習 QPainter之漸變填充

2021-06-14 06:31:42 字數 1577 閱讀 2090

前面說了有關反走樣的相關知識,下面來說一下漸變。漸變是繪圖中很常見的一種功能,它是利用顏色插值使得兩個或更多顏色之間能夠平滑過渡,簡單來說就是可以把幾種顏色混合在一起,讓它們能夠自然地過渡,而不是一下子變成另一種顏色。它們常被用來建立二維圖形的三維效果。漸變的演算法比較複雜,寫得不好的話效率會很低,好在很多繪圖系統都內建了漸變的功能,qt也不例外。漸變一般是用在填充裡面的,所以,漸變的設定就是在qbrush裡面。

qt支援三種型別的漸變,分別是線性漸變(qlineargradient)、輻射漸變(qradialgradient)、錐形漸變(qconicalgradient)。

1、線性漸變由兩個控制點定義,連線這兩點的線上設定一系列的顏色斷點。這些斷點被鉗位到浮點數0和1之間,0對應第乙個控制點,1對應第二個控制點,兩個指定斷點之間的顏色由線性插值得出。如**(以下給出paintevent()函式裡面的**):

void mywidget::paintevent(qpaintevent *event)

這裡0對應第乙個控制點(60,50),1對應第二個控制點(200,200),之間用了三個顏色插值,效果如下圖:

2、輻射漸變由乙個中心點、半徑、乙個焦點,以及顏色斷點控制。中心點和半徑定義乙個圓。顏色從焦點向外擴散,焦點可以是中心點或者圓內的其他點。**如下:

void mywidget::paintevent(qpaintevent *event)

這裡qradialgradient radialgradient(130, 130, 100, 130, 130);中前兩個引數指定了中心點,第三個引數指定了半徑,後兩個引數指定了焦點,這裡中心點和焦點是同乙個點,所以看起來效果是從中心點向外均勻擴散。效果如下:

3、錐形漸變由乙個中心點和乙個角度定義,顏色從x軸正向偏轉乙個角度開始,按給定顏色斷點旋轉擴散。**如下:

void mywidget::paintevent(qpaintevent *event)

這裡定義(150,150)為中心點,從x軸正向開始偏轉90度,然後按白綠黑旋轉擴撒,效果如下:

4、那麼我們如何控制我們的線條也是漸變效果呢 ? 通常我們畫線是用畫筆來完成的,但是qpen是接收qbrush做引數的,也就是說,你可以利用乙個qbrush建立乙個qpen,這樣,qbrush所有的填充效果都可以用在畫筆上了!**如下:

void mywidget::paintevent(qpaintevent *event)

下來看看我們的畫線的漸變效果吧!

Qt中QPainter的問題

我在進行2d繪製時,採用了qpainter的方法,想在qlabel上繪圖,所以直接就 qpainter painter,painter.begin label 報錯 qpainter begin paint device returned engine 0,type 1 qpainter end p...

QT 之QBrush 與漸變

在平時程式設計中,qbrush定義了繪圖過程中,填充形狀的模式或規則。在qpainter,qpen類中,是個很重要的屬性。qbrush 有 以下幾種重要屬性 1.style 定義了填充模式,預設的style為qt nobrush 取決於你怎樣建立的格式刷 這種方式告訴畫筆不要去填充圖形。可以通過se...

Qt之QSS漸變效果

qss目前支援三種漸變填充 效果如下 qpushbutton整個線性漸變軸長度為1。漸變位置 在這個例子中,x1,y1 是起點,在左上角,x2,y2 是終點在右下角。漸變點設定 在0處設白色,在0.4處設灰色,在1處設綠色。漸變位置 cx,cy 是圓錐的中心,angle是漸變的起始角度 漸變點設定 ...