首页 > Web开发 > 详细

Silverlight中16进制颜色转ARGB及Color转Int32

时间:2014-05-31 11:08:32      阅读:347      评论:0      收藏:0      [点我收藏+]
  • 16进制色字符串转ARGB

     做Web的都喜欢用16进制字符串标识颜色,比如“#F5F5F5”这类的,自然这个到了Silverlight/WPF中就要用ARGB表示:“#FFF5F5F5”(前两位标识Alpha,即透明度)。这在XAML中没有任何问题,可是如果我们想在代码中设置颜色呢,或者是从XML中读取的相关值呢?

    这里提供一个代码片段,帮助我们将16进制字符串转为ARGB色

    

bubuko.com,布布扣
    /// <summary>
    /// color扩展方法,
    /// </summary>
    public static class ColorOpr
    {
        public static Color ToColor(this string colorName)
        {
            if (colorName.StartsWith("#"))
                colorName = colorName.Replace("#", string.Empty);
            int v = int.Parse(colorName, System.Globalization.NumberStyles.HexNumber);
            return new Color()
            {
                A = Convert.ToByte((v >> 24) & 255),
                R = Convert.ToByte((v >> 16) & 255),
                G = Convert.ToByte((v >> 8) & 255),
                B = Convert.ToByte((v >> 0) & 255)
            };
        }
    }
bubuko.com,布布扣

之后需要调用扩展方法

Rectangle rectangle = new Rectangle();
rectangle.Fill = new SolidColorBrush("#FFF5F5F5".ToColor());
  • Color转Int32

     看到这里你可能要问了,Color转int有啥用啊?其实如果你在用一些现有的图像库的时候,它们经常将Color表现为一个int值。在这种情况下,ARGB值是通过其AARRGGBB的byte的顺序用32位int表现的。这里我们可以做如下转换:

bubuko.com,布布扣
public static int ToArgb(this Color color) 
{
    int argb = color.A << 24;
    argb += color.R << 16;
    argb += color.G << 8;
    argb += color.B;
    return argb;
}
bubuko.com,布布扣

 

Silverlight中16进制颜色转ARGB及Color转Int32,布布扣,bubuko.com

Silverlight中16进制颜色转ARGB及Color转Int32

原文:http://www.cnblogs.com/godxiangyu/p/3761366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!