如何从其十六进制 RGB 字符串创建 System.Drawing.Color?
Posted
技术标签:
【中文标题】如何从其十六进制 RGB 字符串创建 System.Drawing.Color?【英文标题】:How to create a System.Drawing.Color from its hexadecimal RGB string? 【发布时间】:2010-12-27 05:38:12 【问题描述】:我想从#FF00FF
或FF00FF
之类的值创建System.Drawing.Color
,而无需为此编写代码。有任何 .NET 内置解析器吗?
【问题讨论】:
【参考方案1】:ColorTranslator.Fromhtml("#FF00FF");
【讨论】:
【参考方案2】:您可以使用 System.Drawing.ColorTranslator 静态方法 FromHtml。
使用:
System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
【讨论】:
【参考方案3】:当您使用Convert-Class 时,这相当容易。 ToInt32
函数有一个重载,第二个参数表示字符串所在的基数。
using System.Drawing
Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
【讨论】:
【参考方案4】:使用ColorConverter 类:
var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
color = converter.ConvertFromString( "#FF00FF" );
这也可以从标准命名颜色转换,例如ConvertFromString("蓝色")
有关标准 .NET 类型转换机制的讨论,请参阅 here。
【讨论】:
【参考方案5】:如果您要使用的颜色是常量,在 C# 中使用 System.Drawing.Color.FromArgb (0xFF00FF)
。这比System.Drawing.Color.FromName
或System.Drawing.Color.FromHtml
稍快,因为从字符串到整数的解析是在编译时完成的,而不是在运行时完成的。
【讨论】:
【参考方案6】:FromName 方法对我有用
System.Drawing.Color.FromName("#FF00FF");
【讨论】:
以上是关于如何从其十六进制 RGB 字符串创建 System.Drawing.Color?的主要内容,如果未能解决你的问题,请参考以下文章