C# 将对象转换为 System.Drawing.Color

C# Casting object to System.Drawing.Color

我正在尝试将从注册表项读取的颜色设置转换为 System.Drawing.Color。我将从注册表返回的对象转换为 System.Drawing.Color,在这篇文章之后:Convert OBJECT to System.Drawing.Color

System.Drawing.Color color = (System.Drawing.Color)result;

以下是我作为对象获取的这些注册表值的几个示例:

Type     Data
REG_SZ   Color [Olive]
REG_SZ   Color [A=255, R=255, G=128, B=128]

将第一个注册表项转换为 System.Drawing.Color 工作正常,但在转换第二个注册表项时,出现 "Specified cast is not valid" 错误。能够将这两个键都转换为 System.Drawing.Color 的最佳方法是什么?

编辑: 我认为解决这个问题的最简单方法是写入注册表时,我将颜色转换为 ARGB (int32),这样当我读取它时我可以只使用 Color.FromArgb(除非有另一个我完全缺少的解决方案)。

您从注册表中获得的可能是一个字符串,因此请按照此 page

中的建议使用 ColorConverter class

这是一个示例代码:

Color regColor = (Color)ColorConverter.ConvertFromString((string)result);