Color.FromArgb()方法詳解

寫在前面的話

前幾天做項目的時候需要在後臺定義顏色,用到了Color.FromArgb(),着實讓我折騰了很久。沒辦法,對於一個習慣在設計器中設置顏色,或僅使用Color.Red這種通用顏色的菜鳥來講,實在是不太瞭解Color.FromArgb()的使用。原來頂多也就用到例如(255,255,255)的RGB顏色值來設置。然而顏色值的表現形式多種多樣,例如#7fed23這種16進制的顏色值表示也很常見,而如何直接根據這種表示值來定義顏色呢?現分享給大家。

關於顏色值的表示

常用的顏色值表示方式有兩種,一種是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);
            }

如圖所示,是我使用Color.FromArgb (Int32)方法設置按鈕背景色時使用三個不同值的效果。其差別一目瞭然吧?
這裏寫圖片描述

後記

或許是太久未寫東西,感覺自己語言的組織能力明顯下降,這篇博文幾度寫不下去。不過還是希望我有說清楚自己想要表達的意思,大家能理解就行。以後還要多多總結,多多記錄,繼續努力。共勉!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章