2017-06-04 9 views
-1

私は以下のコードを試してみたが、何かが間違ってライン「Storyboard.SetTargetProperty(CA1、新しいのPropertyPath(」GradientStop.ColorProperty」))であります。GradientStopの色をアニメーション化する方法は?

sb.Begin(これは)InvalidOperationExceptionが投げたし、できませんでした「gradStop1.ColorProperty」を解決する。適切のGradientStop色をアニメーション化する

どう?

private void UserControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     LinearGradientBrush lgb = new LinearGradientBrush(
      (Color)ColorConverter.ConvertFromString("#FF1E2838"), 
      (Color)ColorConverter.ConvertFromString("#FF2B364F"), 
      new Point(0.5, 0), 
      new Point(0.5, 1)); 
     UCBody.Background = lgb; 

     ColorAnimation ca1 = new ColorAnimation(
      (Color)ColorConverter.ConvertFromString("#FF1E2838"), 
      (Color)ColorConverter.ConvertFromString("#FF1E1E1E"), 
      TimeSpan.FromMilliseconds(600)); 

     ColorAnimation ca2 = new ColorAnimation(
      (Color)ColorConverter.ConvertFromString("#FF2B364F"), 
      (Color)ColorConverter.ConvertFromString("#FF2B2B38"), 
      TimeSpan.FromMilliseconds(600)); 

     Storyboard sb = new Storyboard(); 
     sb.Children.Add(ca1); 
     sb.Children.Add(ca2); 
     Storyboard.SetTargetName(ca1, "gradStop1"); 
     Storyboard.SetTargetProperty(ca1, new PropertyPath("GradientStop.ColorProperty")); 
     Storyboard.SetTargetName(ca2, "gradStop2"); 
     Storyboard.SetTargetProperty(ca2, new PropertyPath("GradientStop.ColorProperty")); 

     sb.Begin(this); 
    } 
} 
+2

XAMLでアニメーションを定義しないのはなぜですか?はるかに簡単で、多くのコンバージョンも処理する必要はありません。 XAMLで定義されたグラデーションブラシをアニメーション化する方が簡単になります。その代わりに私はあなたに案内すべきですか? –

+0

まず、文字列リテラルの代わりに 'new PropertyPath(GradientStop.ColorProperty)'または 'new PropertyPath(GradientStop.ColorProperty.Name)'を使用してください。次に、 'gradStop1'と' gradStop2'は何ですか?これらの名前のオブジェクトがどこに定義されているのか分かりません。 – Maxim

+0

役に立つ回答を投票してください。https://stackoverflow.com/help/privileges/voteup – mm8

答えて

0

あなたが 『gradStop1』または 『gradStop2』という名前のオブジェクトを持っていませんが、あなたはBeginAnimationを使用してLinearGradientBrushの勾配停止をアニメーション化できメソッド:

private void UserControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    LinearGradientBrush lgb = new LinearGradientBrush(
     (Color)ColorConverter.ConvertFromString("#FF1E2838"), 
     (Color)ColorConverter.ConvertFromString("#FF2B364F"), 
     new Point(0.5, 0), 
     new Point(0.5, 1)); 
    UCBody.Background = lgb; 

    ColorAnimation ca1 = new ColorAnimation(
     (Color)ColorConverter.ConvertFromString("#FF1E2838"), 
     (Color)ColorConverter.ConvertFromString("#FF1E1E1E"), 
     TimeSpan.FromMilliseconds(600)); 

    ColorAnimation ca2 = new ColorAnimation(
     (Color)ColorConverter.ConvertFromString("#FF2B364F"), 
     (Color)ColorConverter.ConvertFromString("#FF2B2B38"), 
     TimeSpan.FromMilliseconds(600)); 

    lgb.GradientStops[0].BeginAnimation(GradientStop.ColorProperty, ca1); 
    lgb.GradientStops[1].BeginAnimation(GradientStop.ColorProperty, ca2); 
} 
関連する問題