2014-03-06 29 views
0

我想要使用故事板更改矩形的比例,我不知道爲什麼它不起作用。期待任何人的回覆! C#代碼爲:使用故事板更改矩形的比例

Storyboard sb = new Storyboard(); 
InitializeComponent(); 
DoubleAnimation daScaleX = new DoubleAnimation(); 
daScaleX.From = 1; 
daScaleX.To = 2; 
daScaleX.Duration = TimeSpan.FromSeconds(3); 

DoubleAnimation daScaleY = new DoubleAnimation(); 
daScaleY.From = 1; 
daScaleY.To = 2; 
daScaleY.Duration = TimeSpan.FromSeconds(3); 

BounceEase easing = new BounceEase() 
{ 
    EasingMode = EasingMode.EaseOut 
}; 

daScaleX.EasingFunction = easing; 
daScaleY.EasingFunction = easing; 

Storyboard.SetTargetProperty(daScaleX, new PropertyPath("ScaleX")); 
Storyboard.SetTarget(daScaleX, st); 
Storyboard.SetTargetProperty(daScaleY, new PropertyPath("ScaleY")); 
Storyboard.SetTarget(daScaleY, st); 

sb.Children.Add(daScaleX); 
sb.Children.Add(daScaleY); 
sb.Begin(); 

XAML文件是:

<Grid> 
    <StackPanel> 
     <Rectangle x:Name="rect" Fill="Blue" Width="200" Height="40" Margin="5" RenderTransformOrigin="0.5,0.5"> 
     <Rectangle.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform x:Name="st" ScaleX="1" ScaleY="1" /> 
      </TransformGroup> 
     </Rectangle.RenderTransform> 
     </Rectangle> 
    </StackPanel> 
</Grid> 

回答

0

試試這個下面的代碼對我來說

<Grid> 
     <StackPanel> 
      <Rectangle x:Name="rect" Fill="Blue" Width="200" Height="40" Margin="5" RenderTransformOrigin="0.5,0.5"> 
       <Rectangle.RenderTransform> 
        <ScaleTransform x:Name="st" ScaleX="1.0" ScaleY="1.0"></ScaleTransform> 
       </Rectangle.RenderTransform> 
      </Rectangle> 
     </StackPanel> 
    </Grid> 

separately..it工作,做這個動畫在窗口加載事件

void MainWindow_Loaded(object sender, RoutedEventArgs e) 
    { 
     Storyboard sb = new Storyboard(); 

     DoubleAnimation daScaleX = new DoubleAnimation(); 
     daScaleX.From = 1; 
     daScaleX.To = 2; 
     daScaleX.Duration = TimeSpan.FromMilliseconds(300); 

     DoubleAnimation daScaleY = new DoubleAnimation(); 
     daScaleY.From = 1; 
     daScaleY.To = 2; 
     daScaleY.Duration = TimeSpan.FromMilliseconds(300); 

     BounceEase easing = new BounceEase() 
     { 
      EasingMode = EasingMode.EaseOut 
     }; 

     daScaleX.EasingFunction = easing; 
     daScaleY.EasingFunction = easing; 

     Storyboard.SetTargetProperty(daScaleX, new PropertyPath("RenderTransform.ScaleX")); 
     Storyboard.SetTarget(daScaleX, rect); 
     Storyboard.SetTargetProperty(daScaleY, new PropertyPath("RenderTransform.ScaleY")); 
     Storyboard.SetTarget(daScaleY, rect); 

     sb.Children.Add(daScaleX); 
     sb.Children.Add(daScaleY); 
     sb.Begin(); 
    }