在平時程式設計中,qbrush定義了繪圖過程中,填充形狀的模式或規則。在qpainter,qpen類中,是個很重要的屬性。
qbrush 有 以下幾種重要屬性
1.style() :
定義了填充模式,預設的style為qt::nobrush(取決於你怎樣建立的格式刷)這種方式告訴畫筆不要去填充圖形。 可以通過setstyle()來設定填充模式。 下面我們就來看看所有畫刷的樣式,我們從官方幫助文件裡找到了答案,如下圖:
定義了用什麼顏色去填充區域。可以是qt預定義的顏色,比如qt::red 之類的,也可以是我們通過qcolor定義的任何顏色。使用setcolor(qcolor color) 來設定。
3.就是顏色的漸變。什麼是漸變呢?從字面意思就可以理解,就是可以把幾種顏色混合在一起,讓它們能夠自然地過渡,而不是一下子變成另一種顏色。漸變的演算法比較複雜,寫得不好的話效率會很低,好在很多繪圖系統都內建了漸變的功能,qt 也不例外。漸變一般是用在填充裡面的,所以,設定漸變是在qbrush
裡面。
qt 提供了三種漸變:線性漸變(qlineargradient
)、輻射漸變(qradialgradient
)和角度漸變(qconicalgradient
)。我們可以在 qt api 手冊中看到這幾種漸變的區別:
線性漸變:
輻射漸變:
角度漸變:
具體細節可以參考文件。下面我們通過乙個示例看看如何使用漸變進行填充:
void mainwindow::paintevent(qpaintevent *event)
來解釋一下上面的漸變**:
qlineargradient建構函式有四個引數,分別是x1,y1,x2,y2也就是漸變的起點和終點。就相當於一條線段,漸變就是在這條線段的範圍內發生的。在這裡也就是從(0, 50)點開始漸變, 到(0, 200)點為止。
漸變的顏色是在
setcolorat(qreal position, qcolor color)
函式中指定的。這個函式的作用是把positon位置的顏色設定成color。其中position是乙個[0, 1]閉區間的數字,就是說,positon 是相對於我們建立漸變物件時做的那個起點和終點區間的乙個比例。以這個線漸變為例,在(0,50)到(0, 200)的線段上,在0.3也就是大概三分之一的地方設定成紅色。 在0.6的也就是三分之二的地方設定成綠色,在終點1.0的地方設定成藍色。結果如下圖
總結一下:qt 繪圖系統定義了兩個繪製時使用的關鍵屬性:畫刷和畫筆。前者使用qbrush
描述,大多用於填充;後者使用qpen
描述,大多用於繪製輪廓線。
qpainter也是乙個狀態機,這裡我們所說的這些屬性都是處於這個狀態機之中的,因此,我們應該記得是否要將其儲存下來或者是重新構建。
Qt之QSS漸變效果
qss目前支援三種漸變填充 效果如下 qpushbutton整個線性漸變軸長度為1。漸變位置 在這個例子中,x1,y1 是起點,在左上角,x2,y2 是終點在右下角。漸變點設定 在0處設白色,在0.4處設灰色,在1處設綠色。漸變位置 cx,cy 是圓錐的中心,angle是漸變的起始角度 漸變點設定 ...
Qt學習 QPainter之漸變填充
前面說了有關反走樣的相關知識,下面來說一下漸變。漸變是繪圖中很常見的一種功能,它是利用顏色插值使得兩個或更多顏色之間能夠平滑過渡,簡單來說就是可以把幾種顏色混合在一起,讓它們能夠自然地過渡,而不是一下子變成另一種顏色。它們常被用來建立二維圖形的三維效果。漸變的演算法比較複雜,寫得不好的話效率會很低,...
qt漸變效果
出處 前面說了有關反走樣的相關知識,下面來說一下漸變。漸變是繪圖中很常見的一種功能,簡單來說就是可以把幾種顏色混合在一起,讓它們能夠自然地過渡,而不是一下子變成另一種顏色。漸變的演算法比較複雜,寫得不好的話效率會很低,好在很多繪圖系統都內建了漸變的功能,qt也不例外。漸變一般是用在填充裡面的,所以,...