2

アニメーション化されたBrushオブジェクトがあり、このブラシのクローンを作成したいと思います。

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ライブラリが言うように(Brush.Cloneメソッド):

このブラシの変更可能なクローンを作成し、このオブジェクトの値のディープコピーを作成します。依存関係のプロパティをコピーする場合、このメソッドはリソース参照とデータバインディングをコピーしますが(ただし、解決されなくなる可能性があります)、アニメーションや現在の値はコピーしません。

では、アニメーションブラシのクローンを作成する最良の方法は何ですか?ありがとう。

4

2 に答える 2

2

確かなアプローチは、クラスを拡張し、派生クラスBrushに実装することです。ICloneable

カスタムCloneメソッドは、クローンを作成する必要があるものすべてのクローンを処理できます。

于 2012-05-12T19:03:15.483 に答える
2

クローンでアニメーションを再作成する必要があります。他に方法はありません。

于 2012-05-12T19:11:23.573 に答える