2016-11-04 12 views
0

私はメインウィンドウの背景画像をフェードインしようとしています。背景画像をフェードイン

は現在、これは私のコードです:

10 Dim storyboard__1 As New Storyboard() 
20 Dim duration As New TimeSpan(0, 0, 1) 
30 Dim animation As New DoubleAnimation() 

50 animation.From = 0.0 
60 animation.[To] = 1.0 
70 animation.Duration = New Duration(duration) 

90 Storyboard.SetTargetName(animation, "C:\Users\someone\Downloads\cabd.jpg") 
100 Storyboard.SetTargetProperty(animation, New PropertyPath(Control.OpacityProperty)) 

110 storyboard__1.Children.Add(animation) 
120 storyboard__1.Begin(Me.Background) 

エラーがMe.Backgroundとライン120上にあります。 「公共のオーバーロードは、サブ(FrameworkElementのようcontainingObject)を開始します」:型の値「ブラシ」は「FrameworkElementの」に変換することはできません何のアクセス「開始」はこれらの引数で呼び出されることができませんので

エラーBC30518オーバーロードの解決に失敗した

。 'FrameworkContentElement'に変換することはできません。 scrollView

メインウィンドーでイメージフェードアニメーションを呼び出すには、何が欠けていますか?

答えて

2

ストーリーボードを使用する必要はありません。 Storyboard.SetTargetNameが(通常はXAMLで定義されている)要素のNameを使用して、注意点としては

Background.BeginAnimation(Brush.OpacityProperty, animation); // C# 

:ちょうどターゲットImageBrushBeginAnimationを呼び出します。 "C:\Users\someone\Downloads\cabd.jpg"のようなファイルパスを設定するのは無意味です。


EDIT:あなたはもちろん、例えば、それをアニメーション化しようとする前にBackgroundプロパティに変更可能なブラシのインスタンスを割り当てる必要がありますImageBrush

var bgBrush = new ImageBrush(new BitmapImage(new Uri(@"C:\Users\someone\Downloads\cabd.jpg"))); 
bgBrush.BeginAnimation(Brush.OpacityProperty, animation); 
Background = bgBrush; 
+0

私は、オブジェクトがシールまたは凍結されているので、**のエラーは「System.Windows.Media.SolidColorBrush」オン「不透明度」プロパティをアニメーション化することはできません取得**それをしようとしたとき。 – StealthRT

+0

ImageBrushをターゲット要素のBackgroundに割り当てなかったのですか?あなたは「背景イメージを消したい」と言いましたか? – Clemens

+0

はい、メインウィンドウに** Background **属性が既に使用されていますか? – StealthRT