转换对象到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#专家,所以如果这听起来很基础,我很抱歉,但我仍然需要一些帮助。
对象确实是一个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;