谁知道给高分
Brush oldOne = new LinearGradientBrush(new Rectangle(0,0,10,10),Color.Black,Color.White,LinearGradientMode.Horizontal);
Brush newOne = (Brush)oldOne.Clone();
LinearGradientBrush lb = newOne as LinearGradientBrush;
这时候 lb 对象中的属性将无法获得/写入值,操作则抛出异常。
为什么,谁能解释一下,高分回赠。
------解决方案--------------------LinearGradientBrush oldOne = new LinearGradientBrush(new Rectangle(0,0,10,10),Color.Black,Color.White,LinearGradientMode.Horizontal);
LinearGradientBrush lb = oldOne ;
这样不就行了嘛。。。
你上面的:
Brush newOne = (Brush)oldOne.Clone(); //通过强制转换已经成为Brush类对象了
Brush是LinearGradientBrush 的基类
LinearGradientBrush lb = newOne as LinearGradientBrush; //把基类转换为派生类当然行不通了
------解决方案--------------------Brush newOne = (Brush)oldOne.Clone();
这里还有问题。
这里先将oldOne转化为Brush类型,然后调用了Brush类型的Clone.所以结果是一个Brush类型(Clone是Brush的Clone,而不是OldOne的Clone)。新产生的对象是Brush类型,而不是转换成Brush类型的LinearGradientBrush类型。
所以代码应该这样修改:
Brush newOne = (Brush)(oldOne.Clone());