wpf - 如何将 System.Windows.Media.Color 对象序列化为 sRGB 字符串?

标签 wpf serialization colors

我需要将 WPF 应用程序中使用的颜色序列化到数据库。我想使用 sRGB 值,因为我们这些过去几年从事 Web 开发的人更熟悉它们。

如何从 System.Windows.Media.Color 对象获取 ARGB 字符串(如 #FFFFFFFF)?

更新:我被 MSDN 上的文档误导了。正如 @Kris 下面指出的,ToString() 方法的文档不正确。尽管它说 ToString()“使用 ScRGB channel 创建颜色的字符串表示形式”,但如果使用 FromARGB() 方法创建颜色,它实际上会返回 ARGB 十六进制格式的字符串。我想这是一个未记录的功能。

参见http://msdn.microsoft.com/en-us/library/ms606572.aspx

最佳答案

如果您使用 Color.FromRgb 或 Color.FromArgb 而不是 FromScRgb 创建颜色,您应该从 ToString 获得十六进制字符串结果。

如果您想手动执行

string.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", c.A, c.R, c.G, c.B);

您可以使用 int.Parse(,NumberStyles.HexNumber) 进行相反的操作。

注意 sRGB 和 scRGB 指的是不同的颜色空间,请确保您使用您想要的颜色空间。

关于wpf - 如何将 System.Windows.Media.Color 对象序列化为 sRGB 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315088/

相关文章:

java - 如何将派生属性添加到 Jackson 2 序列化类?

c# - 为可序列化模型对象编写事件处理程序的正确方法是什么?

c - 为什么颜色在 ncurses 中不起作用?

c# - 每次都创建相同的对比色阵列的算法?

c# - 我可以在 C# 4.0 中指定默认的 Color 参数吗?

没有 XAML 的 WPF

c# - 在焦点范围内使用列表框

以自定义对象为键的 hash_map 的 C++ Boost.Serialization 错误

wpf - 当底层 Viewmodel 指示它应该时,如何在 View 触发器上设置 WPF EventTrigger?

c# - AvalonDock 绑定(bind)在 DocumentHeaderTemplate 中不起作用