首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用DoubleAnimation缩小图像

如何利用DoubleAnimation缩小图像
EN

Stack Overflow用户
提问于 2015-10-21 13:18:02
回答 1查看 357关注 0票数 1

我有DoubleAnimations将我的Image元素从一个地方移动到另一个地方,但是当我尝试添加另一个DoubleAnimation来缩小图像时,我的代码中断了,这是我的代码:

代码语言:javascript
复制
private Point GetAbsolutePosition(UIElement element)
{
   var ttv = element.TransformToVisual(Window.Current.Content);
   return ttv.TransformPoint(new Point(0, 0));
}

private void MoveToSolarSystem_Start()
{
        var imageToMoveToPoint= GetAbsolutePosition(imageToMoveTo);
        var myImagePoint= GetAbsolutePosition(myImage);
        var offsetX = imageToMoveToPoint.X - myImagePoint.X;
        var offsetY = imageToMoveToPoint.Y - myImagePoint.Y;

        var translateTransform = new TranslateTransform();
        myImage.RenderTransform = translateTransform;

        ScaleTransform scaleTransform = new ScaleTransform();
        myImage.RenderTransform = scaleTransform;

        var scaleAnimation = new DoubleAnimation()
        {
            From = 0,
            To = 100,
            Duration = TimeSpan.FromSeconds(2)
        };

        var animationX = new DoubleAnimation()
        {
            From = 0,
            To = offsetX + 50,
            Duration = TimeSpan.FromSeconds(2)
        };

        var animationY = new DoubleAnimation()
        {
            From = 0,
            To = offsetY + 50,
            Duration = TimeSpan.FromSeconds(2)
        };



        Storyboard.SetTarget(animationX, translateTransform);
        Storyboard.SetTargetProperty(animationX, "X");


        Storyboard.SetTarget(animationY, translateTransform);
        Storyboard.SetTargetProperty(animationY, "Y");

        Storyboard.SetTarget(scaleAnimation, scaleTransform);
        Storyboard.SetTargetProperty(scaleAnimation, "X");


        var storyboard = new Storyboard();

        storyboard.Children.Add(animationX);
        storyboard.Children.Add(animationY);
        storyboard.Children.Add(scaleAnimation);
        storyboard.Begin();

}

当我调试“无法在指定对象上解析TargetProperty X”时,会收到此错误。

有人知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 16:12:20

只能向控件分配一个RenderTransform。幸运的是,CompositeTransform允许您同时应用多个效果。

您的代码中有两件事需要更改。首先,替换您创建转换的代码,以便只创建CompositeTransform

代码语言:javascript
复制
var compositeTransform = new CompositeTransform();
myImage.RenderTransform = compositeTransform;

(将translateTransformscaleTransform的后续引用替换为compositeTransform)

第二件事是,CompositeTransform上的属性名称是不同的。所以你需要调整你的动画:

代码语言:javascript
复制
 Storyboard.SetTarget(animationX, compositeTransform);
 Storyboard.SetTargetProperty(animationX, "TranslateX");

 Storyboard.SetTarget(animationY, compositeTransform);
 Storyboard.SetTargetProperty(animationY, "TranslateY");

 Storyboard.SetTarget(scaleAnimation, compositeTransform);
 Storyboard.SetTargetProperty(scaleAnimation, "ScaleX");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33260430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档