将OBJECT转换为System.Drawing.Color
我知道有很多种方法可以在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上的值时发生的情况。 结果如下:
已知名称
设置属性:颜色=颜色[DimGray]
自定义颜色
设置属性:颜色=颜色[A = 255,R = 255,G = 255,B = 128]
系统颜色
设置属性:Color = Color [ControlText]
我想获取它所具有的值,并实际将其转换为颜色,以便我可以将它放在defaultColor变量中,该变量是先前在程序中创建的。
但是,因为它是一个对象,而不是一个真正的’System.Drawing.Color’,我不能使用像:
.ToKnownColor()
.ToArgb()
。命名()
等等。
我知道必须有一种方法可以将对象转换为实际颜色。 我执行value.GetType()并返回System.Drawing.Color ,因此系统知道它是一种颜色,但对于我的生活,我似乎无法操纵它。
我还不是C#的专家,很抱歉,如果这听起来如此基本,但我仍然希望得到一些帮助。
把它变成Color
:
var effectiveColor = (System.Drawing.Color)value;
括号中的这个东西是一个显式的强制转换 ,你告诉编译器你知道的更好,并且变量的实际类型是其他东西。
该对象实际上是一个Color
,它只是被Object引用引用。 因此,您需要做的就是将其转换为Color。
Color myColor = (Color)value; // now you can do all color operations on myColor
您应该只能将object
转换为Color
,如果它是全部:
Color color = (Color)value;