多长时间转换成ARGB颜色?

时间:2014-07-22 04:39:58

标签: c# converter argb

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

1 个答案:

答案 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);
}