如何从其十六进制RGB字符串创建System.Drawing.Color?

时间:2009-12-16 12:51:56

标签: .net colors parsing hex system.drawing.color

我想从System.Drawing.Color#FF00FF这样的值创建FF00FF,而无需为此编写代码。有任何.NET内置解析器吗?

6 个答案:

答案 0 :(得分:156)

ColorTranslator.FromHtml("#FF00FF");

答案 1 :(得分:58)

您可以使用System.Drawing.ColorTranslator静态方法FromHtml。

使用:

System.Drawing.ColorTranslator.FromHtml("#FFFFFF");

答案 2 :(得分:16)

使用Convert-Class时相当容易。 ToInt32函数有一个重载,第二个参数表示字符串所在的基础。

using System.Drawing

Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));

答案 3 :(得分:9)

使用ColorConverter类:

var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );

这也可以从标准命名颜色转换,例如ConvertFromString(“Blue”)

有关标准.NET类型转换机制的讨论,请参阅here

答案 4 :(得分:1)

如果您要使用的颜色是常量,请在C#中使用System.Drawing.Color.FromArgb (0xFF00FF)。这比System.Drawing.Color.FromNameSystem.Drawing.Color.FromHtml略快,因为从字符串到整数的解析是在编译时而不是在运行时完成的。

答案 5 :(得分:0)

FromName方法适用于我

System.Drawing.Color.FromName("#FF00FF");