pyqt4文件閱讀 9 QColor

2021-07-17 05:03:29 字數 2968 閱讀 3514

本系列文章長期更新修改.

qcolor,是qt裡代表顏色的類,是許多更抽象資料結構和作圖的基礎.

1.顏色模式

qcolor支援三種模式的顏色,分別有rgb,hsv,cmyk.

同時qcolor支援整數和浮點數設定,如果用浮點數設定的話,所有取值範圍都是[0,1]

qcolor在某一時刻只能以一種模式存在,qcolor有一系列函式給我們用來獲取和轉換顏色模式.

spec型別是我們顏色模式的列舉集:

列舉量值

qcolor.rgb

1qcolor.hsv

2qcolor.cmyk

3qcolor.invalid

0當我們在某種模式的qcolor上更新另一種模式的屬性時,這個qcolor會先轉換顏色模式,再更新它的數值,也就是說會自動變換顏色模式.

必須知道的是,當使用錯誤的引數設定的時候,是可能會產生非法的顏色的,此時它的模式就是invalid.

我們可以通過下面函式去檢查乙個qcolor是否合法:

2.rgb模式

rgb模式就是根據紅綠藍三原色進行疊加,是顯示屏的基礎顏色模式,在qcolor裡rgb模式的函式也是最多的.

r,g,b的取值範圍都是[0,255],因此乙個24位整數即可表達乙個rgb顏色.

從rgb延伸出的有rgba,它在紅綠藍的基礎上加上透明度.

透明度a的取值範圍也是[0,255],因此乙個32位整數即可表達乙個rgba顏色.

紅 綠

藍 rgb3.hsv模式

hsv模式的引數分別是hue(色調),saturation(飽和度),value(明度).

h其實是乙個圓的角度,它的取值範圍是[0,360),而s和v則都是[0,255]

同樣地,hsv也可以加上透明度變成hsva模式.

色調飽和度明度

hsv

4.cmyk模式

cmyk模式是印刷方面的重要顏色模型,它的引數包括cyan(青),magenta(品紅),yellow(黃),key plate(黑).

事實上我們以前聽說的印刷三原色只有青,品紅和黃,至於黑,是因為用c,m,y很難調出純黑,並且印刷時用到黑色的地方很多.

因此加上黑色,一方面增大色域和品質,一方面減少其他三種色的顏料的消耗.

c,m,y,k的取值範圍都是[0,255],同樣也可以加上透明度.青

品紅 黃

cmyk

5.透明度

透明度可以單獨設定:

6.初始化

qcolor提供了多達7種的不同引數的初始化方式:

函式引數解釋

__init__ (self)

rgb模式裡的純黑色

__init__ (self, int r, int g, int b, int a = 255)

rgb模式

__init__ (self, unsigned long rgb)

rgb模式

__init__ (self, qt.globalcolor color)

預定義的顏色

__init__ (self, qcolor acolor)

通過其他qcolor

__init__ (self, qstring aname)

通過名字生成rgb模式顏色

__init__ (self, qvariant variant)

?7.靜態方法生成

從初始化函式可以看到,它只支援rgb模式的初始化.如果我們要生成hsv或者cmyk的,我們可以使用靜態方法:

8.顏色名字

在初始化的時候,我們看到顏色能通過名字初始化的.

這個名字可以是rgb特有的用"#"+若干位16進製制數表示的字串,它有下面幾種模式(乙個字母代表乙個16進製制位):

越多的位能讓顏色取值越精細,當然,36位和48位的rgb顏色要在浮點數表示裡才能體現出其精度之高.

這個名字也可以是qcolor提供的乙個顏色表裡的名字.

qcolor有乙個靜態方法可以返回這個顏色表,顏色表裡是一堆字串,使用這些字串可以初始化乙個qcolor.

除了初始化,下面的函式也能實現名字和顏色之間的轉化,注意獲取名字的時候只能得到#rrggbb形式的.

9.預定義顏色

qt提供了一堆預定義的顏色,其中color0和color1是兩個特殊的顏色,它們是bitmap方面用到.

列舉量值

qt.white

3qt.black

2qt.red

7qt.darkred

13qt.green

8qt.darkgreen

14qt.blue

9qt.darkblue

15qt.cyan

10qt.darkcyan

16qt.magenta

11qt.darkmagenta

17qt.yellow

12qt.darkyellow

18qt.gray

5qt.darkgray

4qt.lightgray

6qt.transparent

19qt.color0

0qt.color1

1 它們的實際效果如下:

10.變亮變暗

qcolor提供了兩個有趣的函式,來實現顏色的變亮變暗.

函式的工作原理是把顏色轉換成hsv模式,然後調整v(明度),再轉換回來.

其中無er字尾和有er字尾的效果貌似一樣,並且qt裡本身沒有dark()和light()函式.

引數裡的f是乙個程度係數.

如lighter()函式,如果f<100,則顏色反而會變暗,如果f=150,顏色大概變亮50%.

對於darker()函式,如果f<100,則顏色反而會變亮,如果f=300,顏色會變成原來的1/3亮度.

注意,這些函式都不會改變自身,只是會返回乙個更亮或更暗的顏色.

pyqt4文件閱讀 9 QColor

qcolor,是qt裡代表顏色的類,是許多更抽象資料結構和作圖的基礎.1.顏色模式 qcolor支援三種模式的顏色,分別有rgb,hsv,cmyk.同時qcolor支援整數和浮點數設定,如果用浮點數設定的話,所有取值範圍都是 0,1 qcolor在某一時刻只能以一種模式存在,qcolor有一系列函式...

pyqt4文件閱讀 6 QGridLayout

本系列文章長期更新修改.qgridlayout,網格布局,是qt裡十分常用的布局,下圖即為網格布局示意圖.1.網格系統 qgridlayout是一種網格布局系統,和css裡的bootstrap相似,但比它更複雜.乙個網格布局就是乙個矩陣,每個格仔都可以放乙個控制項或者乙個子布局,也可以乙個控制項占用...

pyqt4文件閱讀 7 QSize

本系列文章長期更新修改.qsize,是qt的乙個常用資料結構,它是整數寬度高度的封裝,本質上就是兩個int的結構體.1.主要屬性 qsize的主要屬性就是寬度和高度,所有方法都圍繞它們進行計算.初始化的時候如果沒有給出引數,寬度和高度為 1.2.函式解釋 函式 解釋transpose self 交換...