如何从十六进制颜色代码(例如#FFDFD991)中获得颜色?
我正在读取一个文件,并得到一个十六进制的颜色代码。我需要为十六进制颜色代码创建相应的System.Windows.Media.Color实例。框架中是否有一个内置的方法来做到这一点?
如何从十六进制颜色代码(例如#FFDFD991)中获得颜色?
我正在读取一个文件,并得到一个十六进制的颜色代码。我需要为十六进制颜色代码创建相应的System.Windows.Media.Color实例。框架中是否有一个内置的方法来做到这一点?
当前回答
假设你是指HTML类型的RGB代码(称为十六进制代码,如#FFCC66),使用ColorTranslator类:
System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66");
如果你使用的是ARGB十六进制代码,你可以使用System.Windows.Media命名空间中的ColorConverter类:
Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or = (Color) ColorConverter.ConvertFromString("#FFCC66") ;
其他回答
我在我的项目中使用了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的返回值。
谢谢大家回答这个问题。这对我帮助很大。
如果你想用Windows商店应用程序,后面跟着@Hans Kesting和@Jink回答:
string colorcode = "#FFEEDDCC";
int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
tData.DefaultData = Color.FromArgb((byte)((argb & -16777216) >> 0x18),
(byte)((argb & 0xff0000) >> 0x10),
(byte)((argb & 0xff00) >> 8),
(byte)(argb & 0xff));
Use
System.Drawing.Color.FromArgb(myHashCode);
假设你是指HTML类型的RGB代码(称为十六进制代码,如#FFCC66),使用ColorTranslator类:
System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66");
如果你使用的是ARGB十六进制代码,你可以使用System.Windows.Media命名空间中的ColorConverter类:
Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or = (Color) ColorConverter.ConvertFromString("#FFCC66") ;
对于任何Xamarin开发人员,您都需要了解
指定颜色类型,以防止强制转换异常假设您谈论的是Xamarin.Forms.Color 创建一个ColorConverter类型的对象
var conv = new System.Drawing.ColorConverter();
var color = (System.Drawing.Color)conv.ConvertFromString("#FF1D65AE");