做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());

来自:http://hi.baidu.com/mi_new/item/c4ddfd5eaed5f73595eb05e6

C# 8进制 16进制 转 rgb相关推荐

  1. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换

    为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010- 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...

  2. 2进制10进制16进制负数的转换

    2进制10进制16进制之间的转换,包含负数. 前言:转换原则 16进制[A-F]与10进制.2进制转义表 一:2进制转16进制 二: 2进制中的负数如何转换成16进制 1.先写成正数的二进制 2. 取 ...

  3. c语言2进制16进制 表格,标题:整数进制转换(十六进制,十进制,二进制)--表格法...

    标题:整数进制转换(十六进制,十进制,二进制)--表格法 在计算机里,最基本的存储单位为字节(Byte,常说的大B),1个字节包含8位(bit,常说的小b).计算机的数据就是一个字节一个字节的形式存储 ...

  4. 【python初级】10进制与2进制8进制16进制的转换

    [python初级]10进制与2进制8进制16进制的转换 背景 代码 背景 在做串口通信的时候发送的字符串都是16进制编码的. 本博客就介绍10进制与2.8.16进制的相互转换. 10进制是我们生活中 ...

  5. C语言中转义字符的使用——8进制16进制转义字符

    文章目录 C语言中8进制16进制转义字符的使用 什么是转义字符 常用的转义字符见下表 八进制与十六进制转义字符的使用 C语言中8进制16进制转义字符的使用 什么是转义字符 C语言允许一种特殊形式的字符 ...

  6. java中 8进制 10进制 2进制 16进制 相互转换

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  7. 2进制 16进制 计算机术语,十六进制转二进制计算器

    十六进制转二进制计算器 十六进制: 二进制: 进制: 进制: 转换说明:上面第一行可将十六进制转换为二进制,第二行可以将任意进制转换为任意进制. 64个基数为: "[email protec ...

  8. Java10进制转16进制,16进制转10进制

    1.Java10进制转16进制 /** 卡号位数:8 */public static byte CARD_NUM_BIT = 8;/*** isBlank * * @param value* @ret ...

  9. JAVA 进制转换工具类 10进制转16进制 10进制转2进制 16进制转2进制 16进制10进制 2进制转10进制 2进制转16进制

    进制转换的坑: 注意:使用Integer的方法转换出来的2进制字符串 最高位是没有补零的 ,java的Integer类的toBinaryString()方法转换出来的二进制字符串只会保留最高非零位以后 ...

  10. C# 数据互转 16进制16进制字符串字符串

    1.字符串过滤 or 提取字符串 提取字符串:在C# .net开发中 "ToString()"方法是最常见的,用于将文本转为字符串: 字符串过滤:在处理字符串数据或者hex数据时, ...

最新文章

  1. 五行塔怎么吃第五个_红毛丹怎么吃 吃红毛丹的五个好处
  2. Linux下百度网盘一直进入不了登陆界面的解决方案
  3. C语言实现希尔排序shell sort算法之一(附完整源码)
  4. Linux通过使用Sambaserver示例
  5. .NET gRPC核心功能初体验
  6. 厚积薄发,拥抱 .NET 2016
  7. mysql抓包_mysql抓包工具
  8. Android P(3)---Android P 功能和 API
  9. 【科普】女人的胸,到底有多少种形状?
  10. Apache Flink 1.9重磅发布!首次合并阿里内部版本Blink重要功能
  11. 忘记PDF密码怎么办?
  12. 使用Tasker和企业微信实现在安卓手机自动转发短信至微信
  13. sql怎样与python联系_【Python】SQLAlchemy的数据对象实例能否转为一个简单的对象(切断与数据库会话的联系)...
  14. VMware ESX Server常用命令行
  15. 解决SSH连接超时的2个配置方法
  16. python写打飞机游戏
  17. 什么样的投影仪好?哪款家用投影仪又好又便宜
  18. linux dmesg查看时间,查看dmesg中的时间
  19. .globl _start
  20. 七(7)探花功能-MongoDB地理位置查询-附近的人

热门文章

  1. 从技术到管理,程序员如何实现螺旋上升?
  2. 第十一届蓝桥杯python大学组国赛真题
  3. 实习没成长,想离职了
  4. 测试人员总结应如何提高产品质量
  5. 【产品质量】如何提升需求质量
  6. 点对点协议PPP(Point-to-Point Protocol)
  7. 同元Syslab使用攻略 | 数据插值与数据拟合
  8. XLINX系列之Zynq-7000系列DDR内存控制器详解
  9. JavaWeb实训项目 河南省旅游指南
  10. SX1276/77/78学习笔记2 - sx1278工作方式