Qt學習之路 27 漸變填充

2021-09-22 01:20:13 字數 965 閱讀 9161

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

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

同前面一樣,這裡也僅僅給出了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學習 QPainter之漸變填充

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

Qt學習之路

qt 學習之路 是在網路上受到一定歡迎的 qt 入門教程。只是這個系列便攜與 2009 年,至今已經有三年多的時間。今天的 qt 有了很大的變化,包括 qt quick 的加入 qt 底層架構的改變,更重要的是 qt 5 的發布。本系列文章將會是 qt 學習之路 的一次公升級和修訂,著重關注於 qt...

QT學習之路

qt學習之路2 目錄 1 序2 qt 前言 3 hello,world 4 訊號槽 5 自定義訊號槽 6 qt 模組簡介 7 mainwindow 簡介 8 新增動作 9 資源檔案 10 物件模型 11 布局管理器 12 選單欄 工具欄和狀態列 13 對話方塊簡介 14 對話方塊資料傳遞 15 標準...