[Silverlight]16进制颜色转ARGB及Color转Int32
2012-01-15 16:00
387 查看
/article/4882582.html
做Web的都喜欢用16进制字符串标识颜色,比如“#F5F5F5”这类的,自然这个到了Silverlight/WPF中就要用ARGB表示:“#FFF5F5F5”(前两位标识Alpha,即透明度)。这在XAML中没有任何问题,可是如果我们想在代码中设置颜色呢,或者是从XML中读取的相关值呢?
必然会报错嘛,至少我是不知道SL或者WPF有没有公开这个Converter,反正俺是无能为力
这里提供一个代码片段,帮助我们将16进制字符串转为ARGB色
Color转Int32
看到这里你可能要问了,Color转int有啥用啊?其实如果你在用一些现有的图像库的时候,它们经常将Color表现为一个int值。在这种情况下,ARGB值是通过其AARRGGBB的byte的顺序用32位int表现的。这里我们可以做如下转换:
OK,散会:)
[Silverlight]16进制颜色转ARGB及Color转Int32
16进制色字符串转ARGB做Web的都喜欢用16进制字符串标识颜色,比如“#F5F5F5”这类的,自然这个到了Silverlight/WPF中就要用ARGB表示:“#FFF5F5F5”(前两位标识Alpha,即透明度)。这在XAML中没有任何问题,可是如果我们想在代码中设置颜色呢,或者是从XML中读取的相关值呢?
必然会报错嘛,至少我是不知道SL或者WPF有没有公开这个Converter,反正俺是无能为力
这里提供一个代码片段,帮助我们将16进制字符串转为ARGB色
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) }; }这里我做成了扩展方法,之后这样使用
Rectangle rectangle = new Rectangle(); rectangle.Fill = new SolidColorBrush("#FFF5F5F5".ToColor());自然就没问题了
Color转Int32
看到这里你可能要问了,Color转int有啥用啊?其实如果你在用一些现有的图像库的时候,它们经常将Color表现为一个int值。在这种情况下,ARGB值是通过其AARRGGBB的byte的顺序用32位int表现的。这里我们可以做如下转换:
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; }以下是这两个方法的一个综合应用:
Rectangle rectangle = new Rectangle(); SolidColorBrush scb = new SolidColorBrush(); scb.Color = "#FFF5F5F5".ToColor(); rectangle.Fill = scb; MessageBox.Show(scb.Color.ToArgb().ToString());猜猜MessageBox Show出来的值是什么?
OK,散会:)
相关文章推荐
- [Silverlight]16进制颜色转ARGB及Color转Int32
- [Silverlight]16进制颜色转ARGB及Color转Int32
- Silverlight 16进制颜色转Color (含透明度处理)
- 在Silverlight中颜色值转换,比如"#EE22FF"如果转换为Color.FromArgb(0,0,0,0);这四个整数。
- 在Silverlight中颜色值转换,比如"#EE22FF"如果转换为Color.FromArgb(0,0,0,0);这四个整数。
- Silverlight 16进制颜色转Color (含透明度处理)
- WPF中将16进制颜色码转换成SolidColorBrush
- WPF中将16进制颜色码转换成SolidColorBrush
- 。。iOS 根据美工给的16进制 得到颜色Color
- Color.FromArgb设置颜色
- system.drawing.color 字符串转换 blend wpf 16进制转rgb argb color
- 颜色值转换,比如"#EE22FF"如果转换为Color.FromArgb(0,0,0,0);这四个整数。
- 把16进制颜色值转换为RGB或ARGB颜色
- WPF中将16进制颜色码转换成SolidColorBrush
- 再学 GDI+[17] FillRectangle、ColorRefToARGB、TGPSolidBrush 和颜色透明度
- 13-1盒模型代码简写关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。 例子1: p{color:#000000;} 可以缩写为: p{
- java实现颜色Color对象和16进制之间的转换
- 十六进制颜色字符串转换成Color在Silverlight中的实现
- 再学 GDI+[17]: FillRectangle、ColorRefToARGB、TGPSolidBrush 和颜色透明度
- EXTJS4扩展实例:一个调用Ext.picker.Color的颜色选择菜单