`

.NET中颜色的转换方法总结

阅读更多
1,AGRB字符串"#FF00AFDB"转Color

法一:System.Drawing.ColorTranslator类
Color color = ColorTranslator.FromHtml("#FF00AFDB");

ColorTranslator还可以将Color转成Html的颜色代码,但是Alpha值将会丢失,如"#FF00AFDB"将会变成"#00AFDB"

法二:System.Drawing.ColorConverter类

ColorConverter colorConverter = new ColorConverter();
Color color = (Color)colorConverter.ConvertFromString("#FF00AFDB");

备注:对于WPF,对应的是System.Windows.Media.ColorConverter,ConvertFromString也变成了静态方法
Color color = (Color)ColorConverter.ConvertFromString("#FF00AFDB");


法三:将"#FF00AFDB"转换成int型的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());


2,已知颜色的名字创建Color,如red,green等

Color color = Color.FromName("red");


3,不知道颜色的名字,可以用系统定义的颜色,如下面几种方式

Color color = Color.FromKnownColor(KnownColor.ActiveBorder);
Color color = Color.Red;
Color color = SystemColors.ButtonFace;


4,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());
分享到:
评论

相关推荐

    asp.net知识库

    .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和...

    asp.net专家疑难解答200问

    如何动态设置ListBox控件中各选项的背景颜色 64.如何在页面中动态创建控件 65.如何为HTML服务器控件的事件添加自定义方法 第4章 验证控件 67.如何使用RequiredFieldValidator控件验证用户是否输入...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    asp.net专家疑难解答200问源码

    63.如何动态设置ListBox控件中各选项的背景颜色 64.如何在页面中动态创建控件 65.如何为HTML服务器控件的事件添加自定义方法 第4章 验证控件 67.如何使用RequiredFieldValidator控件验证用户是否输入信息 68....

    C#.NET学习好资料-编程常用功能及代码的总结与收藏

    13.回车转换成Tab 9 14.DataGrid超级连接列 9 15.DataGrid行随鼠标变色 9 16.模板列 9 17.数字格式化 10 18.日期格式化 10 19.如何设定全局变量 11 20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口?...

    C#实训教程

    8.4.2 .NET中的字典 158 8.4.3 字典的工作情况 160 8.5 内容总结 167 8.6 独立实践 167 9 错误与异常 168 9.1 错误和异常 168 9.2 捕获异常 170 9.3 System.Exception属性 177 9.4 嵌套的 try块 178 9.5 用户...

    Ext Js权威指南(.zip.001

    1.2.5 在.net中使用json / 8 1.2.6 在java中使用json / 12 1.2.7 更多有关json的信息 / 15 1.3 ext js 4概述 / 15 1.4 ext js的开发工具的获取、安装与配置介绍 / 18 1.4.1 ext designer / 18 1.4.2 在visual...

    COLORREF,COLOR,RGB,CString的转化总结分析

    实际的软件开发过程中,常需要用到非.net平台的代码。这时候就可能碰到ColorRef(也就是以int类型代表的颜色值或是以DWORD值表示的颜色)。这跟.net平台下的颜色的相互转换MS并没有直接实现

    Visual Basic 2010入门经典.part1.rar

    11.1.2 将数据从一种类型转换为另一种数据类型 184 11.2 定义和使用常量 185 11.3 声明和引用变量 186 11.3.1 声明变量 186 11.3.2 将字面值赋给变量 187 11.3.3 在表达式中使用变量 188 11.3.4 强制变量声明...

    Visual Basic 2010入门经典.part2.rar

    11.1.2 将数据从一种类型转换为另一种数据类型 184 11.2 定义和使用常量 185 11.3 声明和引用变量 186 11.3.1 声明变量 186 11.3.2 将字面值赋给变量 187 11.3.3 在表达式中使用变量 188 11.3.4 强制变量声明...

    vc++ 应用源码包_1

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    vc++ 应用源码包_6

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    vc++ 应用源码包_2

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    vc++ 应用源码包_5

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    vc++ 应用源码包_3

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

Global site tag (gtag.js) - Google Analytics