如何克隆动画画笔?

时间:2012-05-12 18:51:01

标签: .net wpf animation clone brush

我有一个动画Brush对象,我希望Clone这个画笔。

ColorAnimation ani = new ColorAnimation(Colors.White, TimeSpan.FromSeconds(1))
{ RepeatBehavior = RepeatBehavior.Forever, AutoReverse = true };

SolidColorBrush brush1 = new SolidColorBrush(Colors.Black);
brush1.BeginAnimation(SolidColorBrush.ColorProperty, ani);

SolidColorBrush brush2 = brush1.Clone();

// brush2 is not an animated Brush

if (!brush2.HasAnimatedProperties)
    MessageBox.Show("I don't want this!");

正如MSDN Library所说(Brush.Clone方法):

  

创建此Brush的可修改克隆,制作此对象值的深层副本。复制依赖项属性时,此方法复制资源引用和数据绑定(但它们可能不再解析),但不复制动画或其当前值。

那么,克隆动画画笔的最佳方法是什么? 感谢。

2 个答案:

答案 0 :(得分:2)

一种可靠的方法可能是扩展Brush类并在派生类中实现ICloneable

然后,您的自定义Clone方法可以处理克隆您需要克隆的任何内容。

答案 1 :(得分:2)

您需要在克隆上重新创建动画。没有其他办法。