C# ColorConverter解析ScRGB失败
我正在尝试从Xaml字符串解析LinearGradientBrush,没有任何问题,我使用它进行普通文本或html颜色转换 最近,我遇到了一些使用ScRGB格式从Adobe Illustrator解析为Expression Blend的颜色。这似乎破坏了ColorConverter,因为C# ColorConverter解析ScRGB失败,c#,colors,string-conversion,C#,Colors,String Conversion,我正在尝试从Xaml字符串解析LinearGradientBrush,没有任何问题,我使用它进行普通文本或html颜色转换 最近,我遇到了一些使用ScRGB格式从Adobe Illustrator解析为Expression Blend的颜色。这似乎破坏了ColorConverter,因为Color结构中的ScA值似乎解析错误;例如,0.2变为2,0.5变为5 我的代码相当简单: string colorStr = "sc#0.117647059, 0, 0, 0"; Color color =
Color
结构中的ScA
值似乎解析错误;例如,0.2变为2,0.5变为5
我的代码相当简单:
string colorStr = "sc#0.117647059, 0, 0, 0";
Color color = (Color)ColorConverter.ConvertFromString(colorStr);
Console.WriteLine(color.ScA);
输出:1176471E+08,预期:01176471
这是.NET框架中的一个bug吗(我在4上)?有解决办法吗?是否有人有明确的解决方案?您有文化问题。显然,您生活在一个浮点值中的小数点是逗号而不是句点的地方。但您的颜色字符串的格式为句点。因此,当值转换为float时,它会将字符串中的句点视为千位分隔符,而不是小数点。而“0117647059”实际上是1176471E8
您需要使用ColorConverter.ConvertFrom()重载,它接受CultureInfo引用。传递CultureInfo.InvariantCulture。或者以某种方式在Adobe工具的头上敲击,使其生成正确的本地化字符串。Hmm你说得对!不过我觉得有点奇怪,因为我提供的格式是XAML中的标准格式。为什么静态ColorConverter不能正确解析它,我觉得很奇怪!我讨厌那些文化背景:(