2

我有一个动画画笔对象,我想克隆这个画笔。

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

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

4

2 回答 2

2

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

于 2012-05-12T19:11:23.573 回答
2

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

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

于 2012-05-12T19:03:15.483 回答