關於顏色值的表示
常用的顏色值表示方式有兩種,一種是10進制的RGB值表示,如(0,113,255),三個值分別表示(紅,綠,藍);一種是16進制的顏色碼表示,如#ff3212。這兩種形式在編程中都可以用到。若是在VS設計器中,設置某個控件的前景色或背景色時,可直接用0,113,255或#ff3212的形式,而在后台代碼中,也可以通過Color.FromArgb()方法使用這兩種形式來定義顏色。
Color.FromArgb()方法的重載及使用
Color.FromArgb()方法共有四種重載形式,MSDN上列出來這四種重載方法的說明已足夠解釋各個參數的含義。
其中alpha分量值即透明度設置要比較注意。Color.FromArgb (Int32, Int32, Int32)方法是沒有設alpha值的,默認為255,即不透明。而在使用Color.FromArgb (Int32)方法時,alpha值是默認為0的,例16進制顏色碼#dd2378,使用Color.FromArgb (0xdd2378)來定義顏色,則alpha值是默認為0,該顏色是全透明的,所以看不到該顏色。要想顯示出該顏色,必須設置alpha值>0,如Color.FromArgb (0x7fdd2378),此時顏色為半透明。當然也可以將alpha值設置為全不透,其值為0xffdd2378。不過在使用該值時有些注意事項,因為0xffdd2378是無符號整型uint類型,而Color.FromArgb (Int32)的參數是int型,因此必須使用強制轉化Color.FromArgb((int)0xffdd2378),不過即使這樣,程序仍會報錯,需要使用unchecked重寫才能成功(unchecked 關鍵字用於取消整型算術運算和轉換的溢出檢查)。
我通過幾句簡單的代碼來說明這個問題,代碼如下:
button1.BackColor = Color.FromArgb(0xdd2378); button2.BackColor = Color.FromArgb(0x7fdd2378); unchecked { button3.BackColor = Color.FromArgb((int)0xffdd2378); }
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
如圖所示,是我使用Color.FromArgb (Int32)方法設置按鈕背景色時使用三個不同值的效果。其差別一目了然吧? 
