2012-02-19 4 views
0

単純な円を描き、それをX、Y軸の定義された位置にコーディングしていきたいと思います。円を描いてC#WPFでアニメーションとして移動する方法

たとえば、

WPFウィンドウに2つのボタンがあり、0,0(x、y)に円が表示されます。最初のボタンをクリックすると、X = 150とY = 40になります。しかし、その形はスムーズに行かなければなりません。私はそれが現在の位置で消滅し、定義された位置に現れたくないという意味です。私はそれがそこに行きたい。私はこれをどのようにするべきですか?手順を教えていただけますか?可能であれば、いくつかのコード例?

更新されたコード:

int X = 0; 
    int Y = 0; 

    public bool inside = true; 

    private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 

     if (inside) 
     { 
      DoubleAnimation animatex = new DoubleAnimation(); 
      animatex.To = X++; 
      // animatex.Duration = new Duration(TimeSpan.FromSeconds(1)); 
      // animatex.RepeatBehavior = RepeatBehavior.Forever; 
      el.BeginAnimation(Canvas.LeftProperty, animatex); 

      DoubleAnimation animatey = new DoubleAnimation(); 
      animatey.To = Y++; 
      // animatey.RepeatBehavior = RepeatBehavior.Forever; 
      el.BeginAnimation(Canvas.TopProperty, animatey); 
     } 
    } 

答えて

0

XAMLは、ボタンの <Canvas> <Ellipse Width="10" Height="10" Canvas.Left="0" Canvas.Top="0" Fill="Black" x:Name="el"/> </Canvas> Clickイベントのようなものであるが、これは動作します。この

enter image description here

希望のようなものです。私はそれを試して、それは働いた。

+0

コードブロックのフォーマット方法については、[こちら](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)を参照してください。アニメーションを永遠に繰り返さないのは間違いありません。円は目標位置に一度移動するだけです。 – Clemens

+0

解決に感謝します。クレメンスのために;実際には、コードを改善し、4つの矢印を右下に移動し、そのうちの1つをクリックするたびに別のボタンで移動を終了するまで永遠に移動します。ループの中でanimatexとanimateyを1つずつ増やすようです。 – Samet

+0

@ Ethicallogicsその他:私が上に更新したコードで間違っていることを確認できますか? if条件を変更するまで円を移動したい。しかし、それはそのように動作しません。ボタンをクリックするたびに動作します。 – Samet

0

それともだけXAMLで:ここや他の場所でストーリーボードの使用については、

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <StackPanel> 
     <Button Content="Move it"> 
      <Button.Triggers> 
       <EventTrigger RoutedEvent="Button.Click" > 
        <BeginStoryboard> 
         <Storyboard Storyboard.TargetName="theEllipse" Duration="00:00:05"> 
          <DoubleAnimation From="-5" To="145" Storyboard.TargetProperty="(Canvas.Left)"/> 
          <DoubleAnimation From="-5" To="35" Storyboard.TargetProperty="(Canvas.Top)"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Button.Triggers> 
     </Button> 
    </StackPanel> 
    <Border Margin="10" Grid.Row="1"> 
     <Canvas> 
      <Ellipse x:Name="theEllipse" Width="10" Height="10" Fill="BlueViolet" Canvas.Left="-5" Canvas.Top="-5" /> 
     </Canvas> 
    </Border> 
</Grid> 

検索。

+0

私が上記で更新したコードで間違っていることを確認できますか? if条件を変更するまで円を移動したい。しかし、それはそのように動作しません。ボタンをクリックするたびに動作します。ありがとうございました。 – Samet

+0

サメット、質問をするのは良い習慣ではありません。そして、あなたが1つ以上の役に立つか正解をした後にそれを変更するのは良い習慣ではありません。答えを受け入れ、新しい質問をしてください。 – Phil

+0

よろしくお願いいたします。私はそれを知らなかった。ここに別のリンクがあります:http://stackoverflow.com/questions/9366754/mo​​ving-a-drawn-circle-to-settled-position-in-c-sharp-wpf – Samet

関連する問題