public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string userColourString = value.ToString();
Debug.WriteLine(userColourString);
long userColourNumeric = 0;
Int64.TryParse(userColourString, out userColourNumeric);
var colourToUse = userColourNumeric;
return (Color)ColorConverter.ConvertFromString(string.Format("#{0:x6}", colourToUse));
}
我尝试使用上面的转换器方法将以下两个值转换为颜色,但它不起作用。 -2147483630 16777215
答案 0 :(得分:1)
值16777215
十进制转换为FFFFFF
十六进制。我测试了您的代码,colourToUse
的值确实是"#ffffff"
。这很容易转换为白色。
值-2147483630
十进制最终转换为FFFFFFFF80000012
十六进制。我不确定你希望转换成什么颜色。难怪ConvertFromString
方法会抛出格式异常。
您添加了引用VB6 color constants的旧图表。
要生成该图表中的颜色,您需要使用ColorTranslator.FromWin32
:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var userColourString = value.ToString();
int userColourNumeric = 0;
int.TryParse(userColourString, out userColourNumeric);
var colourToUse = userColourNumeric;
return ColorTranslator.FromWin32(colourToUse);
}