【问题标题】:Changing the scale of Rectangle using storyboard使用情节提要更改矩形的比例
【发布时间】:2014-03-06 23:00:27
【问题描述】:

我想用故事板改变矩形的比例,我不知道为什么它不起作用。期待任何人的回复! 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>

【问题讨论】:

    标签: c# wpf xaml storyboard


    【解决方案1】:

    单独试试下面的代码..它对我有用

       <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>
    

    在 windows 加载事件上做了这个动画

    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();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 2012-08-24
      • 2017-04-26
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多