簡體   English   中英

使用情節提要更改矩形的比例

[英]Changing the scale of Rectangle using storyboard

我想使用情節提要更改Rectangle的比例,但我不知道為什么它不起作用。 期待任何人的回復! 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>

單獨嘗試以下代碼..對我有用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM