ColorConverter 在解析 ScRGB 时失败
本文关键字:失败 ScRGB ColorConverter | 更新日期: 2023-09-27 18:32:16
我正在尝试从Xaml字符串解析LinearGradientBrush,没有任何问题,我使用ColorConverter.ConvertFromString
进行普通文本或html颜色转换。
最近,我遇到了一些从Adobe Illustrator解析到Expression Blend的颜色,使用ScRGB格式"sc#scA,scR,scG,scB"。这似乎破坏了 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);
输出: 1,176471E+08, 预期: 0,1176471
这是 .NET Framework 中的错误吗(我在 4 上)?有解决方法吗?有人有干净的修复吗?
你有文化问题。 显然,您生活在浮点值中的小数点是逗号而不是句点的世界的一部分。 但是您的颜色字符串使用句点进行格式化。 因此,当值转换为浮点数时,它将字符串中的句点视为千位分隔符,而不是小数点。 而"0117647059"确实是1,176471e8。
你需要使用 ColorConverter.ConvertFrom() 重载,它接受 CultureInfo 引用。 传递文化信息.不变文化。 或者以某种方式将Adobe工具放在头上,以便生成正确本地化的字符串。