【发布时间】:2010-12-27 05:38:12
【问题描述】:
我想从#FF00FF 或FF00FF 之类的值创建System.Drawing.Color,而无需为此编写代码。有任何 .NET 内置解析器吗?
【问题讨论】:
标签: .net colors parsing hex system.drawing.color
我想从#FF00FF 或FF00FF 之类的值创建System.Drawing.Color,而无需为此编写代码。有任何 .NET 内置解析器吗?
【问题讨论】:
标签: .net colors parsing hex system.drawing.color
ColorTranslator.FromHtml("#FF00FF");
【讨论】:
您可以使用 System.Drawing.ColorTranslator 静态方法 FromHtml。
使用:
System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
【讨论】:
当您使用Convert-Class 时,这相当容易。 ToInt32 函数有一个重载,第二个参数表示字符串所在的基数。
using System.Drawing
Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
【讨论】:
使用ColorConverter 类:
var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );
这也可以从标准命名颜色转换,例如ConvertFromString("蓝色")
有关标准 .NET 类型转换机制的讨论,请参阅 here。
【讨论】:
如果您要使用的颜色是常量,在 C# 中使用 System.Drawing.Color.FromArgb (0xFF00FF)。这比System.Drawing.Color.FromName 或System.Drawing.Color.FromHtml 稍快,因为从字符串到整数的解析是在编译时完成的,而不是在运行时完成的。
【讨论】:
FromName 方法对我有用
System.Drawing.Color.FromName("#FF00FF");
【讨论】: