將十進制的顏色制轉換成ARGB


將一個十進制的顏色值轉換成具體的ARGB 格式,起初,這看起來有些難,一直找不到方法,在網上也找不到具體的資料,最后在同事的指導下成功完成的轉換,現分享出來,供大家參考,具體轉換方法如下:

 

        /// <summary>
        /// 獲取顏色值   注意: 0XFF 的全寫是: 0X000000FF
        /// </summary>
        /// <param name="value">顏色值的十進制表示</param>
        /// <returns></returns>
        private Color GetColorValue(string value)
        {
            if (string.IsNullOrWhiteSpace(value))
                return Color.White;
            var colorValue = ulong.Parse(value);
            int a = (int)(colorValue >> 24) & 0XFF;
            int r = (int)(colorValue >> 16) & 0XFF;
            int g = (int)(colorValue >> 8) & 0XFF;
            int b = (int)(colorValue & 0XFF);
            Color color = Color.FromArgb(a, r, g, b);
            return color;
        }

  其原理如下: 

  32 位十六進制數是四對十六進制數字的序列。每個十六進制對定義四個顏色通道 (紅、綠、藍和 Alpha) 中每個顏色通道的強度。顏色通道的強度為以范圍介於 0 ~255 之間的十進制數的十六進制表示法;FF 是指全強度 (255), 00 是指通道中無顏色 (0)。
  由於顏色值長度需要兩位數字, 因此您需要填充一個通道, 例如用 01 代替 1。這樣可確保十六進制數中始終具有八個數字。還應確保指定十六進制數前綴 0X。例如, 白色 (所有通道中都是全強度) 用十六進制記數法表示為: 0XFFFFFFFF。而黑色正好相反;它在紅色、綠色和藍色中的任何一個通道中都無顏色: 0XFF000000。注意, Alpha 通道 (第一對) 仍然為全強度 (FF)。Alpha 通道中的全強度意味着沒有 Alpha (FF), 無強度 (00) 意味着全 Alpha。因此, 透明像素顏色值為 0X00FFFFFF。 從 ARGB 轉換為十六進制值 對於特定的顏色, 人們通常容易記住它的 Alpha、紅色、綠色和藍色 (ARGB) 值。

   同理,把一個ARGB 的顏色值轉換成32位十進制值如下:

 

        /// <summary>
        /// 獲取顏色值
        /// </summary>
        /// <param name="value">顏色值</param>
        /// <returns></returns>
        private int GetColorIntValue(Color value)
        {
            return (value.A <<24 | value.R <<16 | value.G <<8 | value.B);
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM