将OBJECT转换为System.Drawing.Color

时间:2011-04-18 15:15:55

标签: c# .net colors

我知道有很多方法可以在C#中转换颜色,从将字符串转换为Color值,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上的值时发生的情况。结果如下:

已知名称

  

设置属性:颜色=颜色   [暗灰]

自定义颜色

  

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

系统颜色

  

设置属性:Color = Color [ControlText]

我想获取它所具有的值,并实际将其转换为颜色,以便我可以将它放在defaultColor变量中,该变量是之前在程序中创建的。

但是,由于它是对象而不是实际的'System.Drawing.Color',我不能使用以下内容:

  

.ToKnownColor()

     

.ToArgb()

     

.ToName()

等等。

我知道必须有一种方法可以将对象转换为实际颜色。我执行value.GetType()并返回 System.Drawing.Color ,因此系统知道它是一种颜色,但对于我的生活,我似乎无法操纵它。

我还不是C#的专家,很抱歉,如果这听起来那么基本,但我仍然希望得到一些帮助。

3 个答案:

答案 0 :(得分:2)

将其投放到Color

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

括号中的这个东西是explicit cast,你告诉编译器你知道的更好,并且变量的实际类型是别的。

答案 1 :(得分:2)

对象确实是Color,它只是被Object引用引用。因此,您需要做的就是将其投射到Color。

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

答案 2 :(得分:2)

您应该能够将object转换为Color,如果完全是这样的话:

Color color = (Color)value;