2012-09-25 49 views
1

我有邊界顏色已確定的對象。如何將兩個QColor對象與Alpha通道結合使用?

現在我希望用戶至少能夠設置填充圖案的不透明度。例如,邊界是藍色的。用戶將不透明度設置爲128,所以填充圖案也用藍色繪製,但是半透明。

下一步將允許用戶稍微調整圖案的顏色。例如:「使用邊框顏色,但使其變爲半透明(alpha = 128),並且有點黃色。」

是否有一種(有用的)方式來組合兩種顏色,其中一種沒有alpha值設置?或者,將原始顏色設置爲Alpha值並將其與「alpha」值設置的「覆蓋顏色」結合起來會更有意義嗎?

是否有一個函數(或其他方式,有人可以給一個簡短的代碼片段)來組合兩個QColor對象?

+0

我無意中提到了Qt文檔中提到的XRender擴展。維基百科表示它使用http://en.wikipedia.org/wiki/Alpha_compositing。所以我現在正在閱讀那篇文章。 –

回答

2

我會看看現有的顏色選擇器(Gimp,Photoshop,Paint,wwWidgets)。他們大多數處理採取您的顏色的幾種不同的方式:

飽和度,色相,值,亮度,對比度,RGB,CMYK,HSV,Alpha /不透明度。

的Qt處理這些一堆右開箱:

QColor

爲兩種顏色結合起來,我大概平均將各自不同的組件連接在一起:

// Rough pseudocode 

Color1 RGBA, Color 2 RGBA, Color 3 = combination 

Color3.R = (Color1.R + Color2.R)/2 
Color3.G = (Color1.G + Color2.G)/2 
Color3.B = (Color1.B + Color2.B)/2 
Color3.A = (Color1.A + Color2.A)/2 

希望這有助於。

PS:瞭解Color Space也會有所幫助。

+2

只是對alpha通道進行平均處理,而不是用它們對色彩進行加權似乎與忽略通常的alpha一樣好。 – IARI

相關問題