Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ColorConverter解析ScRGB失败_C#_Colors_String Conversion - Fatal编程技术网

C# ColorConverter解析ScRGB失败

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 =

我正在尝试从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)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不能正确解析它,我觉得很奇怪!我讨厌那些文化背景:(