2012-05-12 14 views
2

私はアニメーションBrushオブジェクトを持っています。私はCloneこのブラシにします。 MSDNライブラリとしてアニメーションブラシのクローン作成方法

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!"); 

は(Brush.Clone法)言う:

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

アニメーションブラシを複製するにはどうすればよいですか?おかげさまで

答えて

2

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

2

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

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

+0

カスタムクローンメソッドの実装方法の例を教えてください。 – gliderkite

+0

さて、ICloneableはかなり単純なインターフェイスです。それは単一のメソッドCloneを公開します。したがって、実装する際には、ソースオブジェクトからプロパティ/フィールドを取るコードを入れてそれらのコピーを作成し、コピーしたものと共に新しいオブジェクトを返します。実装の詳細は、実際に行う必要とそれをどのようにしたいかによって異なります。 –

+0

@usr SolidColorBrushをそのシールとして拡張することはできませんが、Brushを確実に拡張できます。よくチェックしてください。 –

関連する問題