2016-11-12 15 views
2

円で拡大して消えていくシンプルなアニメーションを作成しようとしていますが、問題は左上から拡大していて、中央から拡大したいです。iv 'eはRenderTransformOriginを(0.5、0.5)に設定しようとしましたが、それでも動作しません。中心楕円の起点

これは私のコードです:

Ellipse impact = new Ellipse(); 

impact.Width = 50; 
impact.Height = 50; 
impact.StrokeThickness = 1.5f; 

impact.RenderTransformOrigin = new Point(0.5, 0.5); 
MainCanvas.Children.Add(impact); 


Storyboard story = new Storyboard(); 
DoubleAnimation anim = new DoubleAnimation(0, 60, TimeSpan.FromSeconds(0.9)); 
DoubleAnimation anim2 = new DoubleAnimation(0, 60, TimeSpan.FromSeconds(0.9)); 
DoubleAnimation anim3 = new DoubleAnimation(1, 0, TimeSpan.FromSeconds(0.9)); 


Storyboard.SetTargetProperty(anim, new PropertyPath("(Ellipse.Height)")); 
Storyboard.SetTargetProperty(anim2, new PropertyPath("(Ellipse.Width)")); 
Storyboard.SetTargetProperty(anim3, new PropertyPath("(Ellipse.Opacity)")); 

story.Children.Add(anim); 
story.Children.Add(anim2); 
story.Children.Add(anim3); 

impact.BeginStoryboard(story); 
+0

対象とするもの:Winforms、WPF、ASP ..? __Always__あなたの質問に正しくタグを付けてください! – TaW

+0

申し訳ありません、私はあなたがwpf上でDoubleAnimationを使うことができると思ったので、私は使用しているwpfとすべてを描画するキャンバスです。 – Alexander

+0

これは__not__について何がタグ付けされているのですか?それは 'Tagged Questions'ページの質問をフィルタリングすることです!タグ付けが正しく行われないと永遠に時間が無駄になります!私達は助けを求めていますが、私たちは推測と控除ゲームをしたくありません。So:私に言いなさい、それをタグ付けしてください! – TaW

答えて

0

RenderTransformは効果がありませんを設定せずにRenderTransformOriginプロパティを設定します。

あなたはおそらくやりたいことは楕円の代わりにEllipseGeometryでパスをアニメーション化することです。

var impact = new Path 
{ 
    Data = new EllipseGeometry(new Point(25, 25), 25, 25), 
    StrokeThickness = 1.5, 
    Stroke = Brushes.Black 
}; 

MainCanvas.Children.Add(impact); 

Storyboard story = new Storyboard(); 
DoubleAnimation anim1 = new DoubleAnimation(0, 30, TimeSpan.FromSeconds(0.9)); 
DoubleAnimation anim2 = new DoubleAnimation(0, 30, TimeSpan.FromSeconds(0.9)); 
DoubleAnimation anim3 = new DoubleAnimation(1, 0, TimeSpan.FromSeconds(0.9)); 

Storyboard.SetTargetProperty(anim1, new PropertyPath("Data.RadiusX")); 
Storyboard.SetTargetProperty(anim2, new PropertyPath("Data.RadiusY")); 
Storyboard.SetTargetProperty(anim3, new PropertyPath("Opacity")); 

story.Children.Add(anim1); 
story.Children.Add(anim2); 
story.Children.Add(anim3); 

impact.BeginStoryboard(story); 

あなたは今、所望の効果を達成するためにEllipseGoemetryの中心と半径を調整することができます。あなたのサークルが半径25で始まり、すぐに0から30にアニメーション化される理由も明確ではありません。

+0

ありがとう、これはまさに私が欲しかったことでした、それを感謝します。 – Alexander