RGB與INT類型的轉換


開發時遇到的問題,設置圖層樣式時顏色的返回值是uint,一時不知改怎么轉換為C#常用的RGB值了。

一番百度,結果如下:

RGB = R + G * 256 + B * 256 * 256

因此可得到如下反推代碼:

        private Color To_RGB(int color)
        {
            int b = color / (256 * 256);
            int g = (color - b * 256 * 256) / 256;
            int r = color - b * 256 * 256 - g * 256;
            return Color.FromArgb(r, g, b);
        }

網上還有位運算的快速算法:

        private uint To_uint(Color color)
        {
            return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8) | color.R));
        }
        private Color To_RGB(int color)
        {
            int r = 0xFF & color;
            int g = 0xFF00 & color;
            g >>= 8;
            int b = 0xFF0000 & color;
            b >>= 16;
            return Color.FromArgb(r, g, b);
        }

並看不懂,但是能用。


免責聲明!

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



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