[Silverlight]16进制颜色转ARGB及Color转Int32

简介: http://www.cnblogs.com/024hi/archive/2009/09/28/1576040.html[Silverlight]16进制颜色转ARGB及Color转Int3216进制色字符串转ARGB做Web的都喜欢用16进制字符串标识颜色,比如“#F5F5F5”这类的,自然这个到了Silverlight/WPF中就要用ARGB表示:“#FFF5F5F5”(前两位标识Alpha,即透明度)。

http://www.cnblogs.com/024hi/archive/2009/09/28/1576040.html

[Silverlight]16进制颜色转ARGB及Color转Int32

  • 16进制色字符串转ARGB

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

image

必然会报错嘛,至少我是不知道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,散会:)

 

 

目录
相关文章
|
JavaScript
JS: int转16进制
JS: int转16进制
94 0
将十六进制颜色转换为int类型的数值
int colorInt = Color.parseColor("#AABBCCDD"); System.out.println("colorInt="+colorInt);
1579 0
|
vr&ar
Silverlight 16进制颜色转Color (含透明度处理)
转自http://www.cnblogs.com/NatureSex/archive/2012/02/17/2355929.html 由于Silverlight 不能引用System.Drawing 命名空间进行 颜色转换的一些处理,故写此函数来转换 public Color HtmlToC...
632 0
|
7月前
|
数据采集 分布式计算 数据处理
Dataphin常见问题之与指定类型int不兼容如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
7月前
|
SQL 流计算 OceanBase
OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
【2月更文挑战第25天】OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
188 3
|
2月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
32 3