2016-11-12 170 views
2

我想用一個正在擴大和消失的圓圈做一個簡單的動畫,我遇到的問題是它從左上角擴展,我希望它從中心擴展,iv嘗試將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__標記的內容!這是關於過濾「標籤問題」頁面上的問題!無法正確標記是在浪費任何人的時間!我們在這裏幫助,但我們不想玩猜謎和演繹遊戲。所以:不要告訴我,標記它! – TaW

回答

0

設置RenderTransformOrigin財產不能設置一個RenderTransform沒有效果。

什麼你可能想要做的是一個動畫路徑與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