转换对象到System.Drawing.Color

本文关键字:Drawing Color System 对象 转换 | 更新日期: 2023-09-27 17:50:23

我知道在c#中有很多转换颜色的方法,从将字符串转换为颜色值,HTML转换,甚至XNA框架;但是,我有一个返回System.Drawing.Color类型的对象;但因为它是一个"对象",而不是一个"颜色",我似乎不能在它上面使用正常的颜色命令。

public void SetPropertyValue(string propertyName, object value)
    {
        _PropertyValues[propertyName] = value;
        Console.WriteLine("Setting Property: {0}={1}", propertyName, value);
    }

以上是c#中用户更改Grid属性值时发生的情况。结果如下:

<

知道名称/strong>

设置属性:Color=Color(DimGray)

<

自定义颜色/strong>

设置属性:Color=Color [A=255, R=255, G=255, B=128]

<

系统颜色/strong>

设置属性:Color=Color [ControlText]

我想取它在那里的值,并实际将其转换为颜色,这样我就可以在defaultColor变量中拥有它,该变量之前在程序中创建。

然而,因为它是一个对象而不是一个实际的"System.Drawing"。Color',我不能用

.ToKnownColor ()

.ToArgb ()

.ToName ()

等等

我知道必须有一种方法从对象转换为实际的颜色。我做value.GetType(),它返回System.Drawing。Color,所以系统知道它是一种颜色,但是对于我的生命,我似乎无法操纵它。

我还不是c#专家,所以如果这听起来很基础,我很抱歉,但我仍然需要一些帮助。

转换对象到System.Drawing.Color

对象确实是一个Color,它只是被object引用引用。所以你所需要做的就是把它转换成一个颜色。

Color myColor = (Color)value;
// now you can do all color operations on myColor

将其强制转换为Color:

var effectiveColor = (System.Drawing.Color)value;

括号中的内容是显式强制转换,在这里您告诉编译器您知道得更好,并且变量的实际类型是其他类型。

您应该能够将object转换为Color,如果这就是它的全部:

Color color = (Color)value;