RGB与INT类型的转换

开发时遇到的问题,设置图层样式时颜色的返回值是uint,一时不知改怎么转换为C#经常使用的RGB值了。算法

一番百度,结果以下:ui

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

所以可获得以下反推代码:code

        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);
        }

网上还有位运算的快速算法:blog

        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);
        }

并看不懂,可是能用。开发

相关文章
相关标签/搜索