如何从十六进制颜色代码(例如#FFDFD991)中获得颜色?
我正在读取一个文件,并得到一个十六进制的颜色代码。我需要为十六进制颜色代码创建相应的System.Windows.Media.Color实例。框架中是否有一个内置的方法来做到这一点?
如何从十六进制颜色代码(例如#FFDFD991)中获得颜色?
我正在读取一个文件,并得到一个十六进制的颜色代码。我需要为十六进制颜色代码创建相应的System.Windows.Media.Color实例。框架中是否有一个内置的方法来做到这一点?
当前回答
我在我的项目中使用了ColorDialog。ColorDialog有时返回“Red”,“Fhushia”,有时返回“fff000”。我这样解决了这个问题也许能帮到别人。
SolidBrush guideLineColor;
if (inputColor.Any(c => char.IsDigit(c)))
{
string colorcode = inputColor;
int argbInputColor = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
guideLineColor = new SolidBrush(Color.FromArgb(argbInputColor));
}
else
{
Color col = Color.FromName(inputColor);
guideLineColor = new SolidBrush(col);
}
InputColor是ColorDialog的返回值。
谢谢大家回答这个问题。这对我帮助很大。
其他回答
我需要将HEX颜色代码转换为System.Drawing。颜色,特别是在WPF表单上作为背景的爱丽丝蓝的阴影,并发现找到答案的时间比预期的要长:
using System.Windows.Media;
--
System.Drawing.Color myColor = System.Drawing.ColorTranslator.FromHtml("#EFF3F7");
this.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(myColor.A, myColor.R, myColor.G, myColor.B));
你可以使用ColorConverter.ConvertFromString(string)方法将你的字符串(十六进制)转换为颜色。
示例:(这适用于ARGB,如“#FF1E1E1E”。
Control.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#1E1E1E"));
在asp.net:
color_black = (Color)new ColorConverter().ConvertFromString("#FF76B3");
你可以看到Silverlight/WPF用十六进制的颜色设置椭圆来使用十六进制值:
your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)
我猜这是ARGB代码…你指的是system。drawing。color还是system。windows。media。color ?例如,后者在WPF中使用。我还没见过有人提到它,所以以防你在找它:
using System.Windows.Media;
Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");