qt漸變效果

2021-09-30 13:06:35 字數 1236 閱讀 2435

出處:

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

qt提供了三種漸變畫刷,分別是線性漸變(qlineargradient)、輻射漸變(qradialgradient)、角度漸變(qconicalgradient)。如下圖所示(出自c++ gui programming with qt4, 2nd edition):

下面我們來看一下線性漸變qlineargradient的用法。

同前面一樣,這裡也僅僅給出了paintevent()函式裡面的**。

首先我們開啟了反走樣,然後建立乙個qlineargradient物件例項。qlineargradient建構函式有四個引數,分別是x1, y1, x2, y2,即漸變的起始點和終止點。在這裡,我們從(60, 50)開始漸變,到(200, 200)止。

漸變的顏色是在setcolorat()函式中指定的。下面是這個函式的簽名:

const qcolor & color )

它的意思是把position位置的顏色設定成color。其中,position是乙個0 - 1區間的數字。也就是說,position是相對於我們建立漸變物件時做的那個起始點和終止點區間的。比如這個線性漸變,就是說,在從(60, 50)到(200, 200)的線段上,在0.2,也就五分之一處設定成白色,在0.6也就是五分之三處設定成綠色,在1.0也就是終點處設定成黑色。

在建立qbrush時,把這個漸變物件傳遞進去,就是我們的結果啦:

那麼,我們怎麼讓線段也是漸變的呢?要知道,直線是用畫筆繪製的啊!這裡,如果你仔細查閱了api文件就會發現,qpen是接受qbrush作為引數的。也就是說,你可以利用乙個qbrush建立乙個qpen,這樣,qbrush所有的填充效果都可以用在畫筆上了!

event) 

看看我們的漸變線吧!

Qt之QSS漸變效果

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

窗體漸變效果

using system.runtime.interopservices dllimport user32.dll private static extern bool animatewindow int hwnd,int dwtime,int dwflags private const int a...

陰影漸變效果

我們的策劃想要讓原本的假陰影做乙個漸變的效果並且想要讓邊緣模糊。原本的效果時這樣的 可以看到陰影就是乙個黑影並且邊緣有很多鋸齒。首先來分析兩個事情,乙個是鋸齒,乙個時漸變陰影。一 陰影鋸齒 陰影的鋸齒主要是因為畫素不足導致的,這個情況下如果是用shadowmap的話我們可以考慮用pcf等方法處理。市...