加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-phone-7 – 如何同时为两个轴(X,Y)翻译动画?

发布时间:2020-12-14 05:36:07 所属栏目:Windows 来源:网络整理
导读:我在Storyboard方法中做了类似的事情,但无法达到预期的效果.这个动画我想在页面加载后播放. private void PhoneApplicationPage_Loaded(object sender,RoutedEventArgs e) { CreateTranslateAnimation(image1); } private void CreateTranslateAnimation(UIE
我在Storyboard方法中做了类似的事情,但无法达到预期的效果.这个动画我想在页面加载后播放.

private void PhoneApplicationPage_Loaded(object sender,RoutedEventArgs e)
    {
        CreateTranslateAnimation(image1);
    }


        private void CreateTranslateAnimation(UIElement source)
        {
            Storyboard sb = new Storyboard();

            DoubleAnimationUsingKeyFrames animationFirstX = new DoubleAnimationUsingKeyFrames();
            source.RenderTransform = new CompositeTransform();
            Storyboard.SetTargetProperty(animationFirstX,new PropertyPath(CompositeTransform.TranslateXProperty));
            Storyboard.SetTarget(animationFirstX,source.RenderTransform);
            animationFirstX.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = kt1,Value = 20 });

            DoubleAnimationUsingKeyFrames animationFirstY = new DoubleAnimationUsingKeyFrames();
            source.RenderTransform = new CompositeTransform();
            Storyboard.SetTargetProperty(animationFirstY,new PropertyPath(CompositeTransform.TranslateYProperty));
            Storyboard.SetTarget(animationFirstY,source.RenderTransform);
            animationFirstY.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = kt1,Value = 30 });

    sb.Children.Add(animationFirstX);
            sb.Children.Add(animationFirstY);
            sb.Begin();             
         }

缩短它…

我想编写与此代码等效的.cs代码

<Storyboard x:Name="Storyboard1">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="image1">
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="20"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="image1">
            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="30"/>
        </DoubleAnimationUsingKeyFrames>
        </Storyboard>

解决方法

您正在设置source.RenderTransform两次.第一个变换动画引用了一个CompositeTransform对象,该对象在动画运行时已从UIElement中删除.

摆脱第二个来源.RenderTransform = new CompositeTransform();你应该得到更好的结果.

“剪切和粘贴的来源是很多编码邪恶的来源”:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读