Wpf 同时缩放和移动项目

Wpf 同时缩放和移动项目,wpf,silverlight,windows-phone-8,Wpf,Silverlight,Windows Phone 8,我正在尝试创建一个故事板,可以将元素缩放并移动到特定位置。基本思路是有一排6张小卡片,点击其中一张将放大到更详细的图像,从小卡片的位置和大小开始,最后是一张大的居中卡片 这张卡不会在我指定的X,Y位置结束,我相信是因为scaletransform也在移动它。我看到matrixtransform可以工作,但无法让它工作,至少在WP8中是这样。这是我的原始代码,卡片是起始位置的小卡片,项目是要缩放和移动的大详细卡片 private void ZoomIn(UIElement item, UI

我正在尝试创建一个故事板,可以将元素缩放并移动到特定位置。基本思路是有一排6张小卡片,点击其中一张将放大到更详细的图像,从小卡片的位置和大小开始,最后是一张大的居中卡片

这张卡不会在我指定的X,Y位置结束,我相信是因为scaletransform也在移动它。我看到matrixtransform可以工作,但无法让它工作,至少在WP8中是这样。这是我的原始代码,卡片是起始位置的小卡片,项目是要缩放和移动的大详细卡片

    private void ZoomIn(UIElement item, UIElement card)
    {

        // setup
        var _Scale = new ScaleTransform
        {
            ScaleX = 1,
            ScaleY = 1,
            CenterX = item.RenderSize.Width / 2,
            CenterY = item.RenderSize.Height / 2,   
        };

        var transform = card.TransformToVisual(Application.Current.RootVisual as FrameworkElement);
        Point absolutePosition = transform.Transform(new Point(0, 0));

        var _Translate = new TranslateTransform();

        var _Group = new TransformGroup();
        _Group.Children.Add(_Scale);
        _Group.Children.Add(_Translate);
        item.RenderTransform = _Group;

        // animate
        var _Storyboard = new Storyboard { };

        // scale X
        var _ScaleAnimateX = new DoubleAnimation
        {
            To = 1.0,
            From=0.5,
            Duration = TimeSpan.FromSeconds(.25)
        };
        _Storyboard.Children.Add(_ScaleAnimateX);
        Storyboard.SetTarget(_ScaleAnimateX, _Scale);
        Storyboard.SetTargetProperty(_ScaleAnimateX,
            new PropertyPath(ScaleTransform.ScaleXProperty));

        // scale Y
        var _ScaleAnimateY = new DoubleAnimation
        {
            To = 1.0,
            From = 0.5,
            Duration = TimeSpan.FromSeconds(.25)
        };
        _Storyboard.Children.Add(_ScaleAnimateY);
        Storyboard.SetTarget(_ScaleAnimateY, _Scale);
        Storyboard.SetTargetProperty(_ScaleAnimateY,
            new PropertyPath(ScaleTransform.ScaleYProperty));


        // translate (location X)
        var _TranslateAnimateX = new DoubleAnimation
        {
            From = absolutePosition.X,
            To = 300,
            Duration = TimeSpan.FromSeconds(.25)
        };
        _Storyboard.Children.Add(_TranslateAnimateX);
        Storyboard.SetTarget(_TranslateAnimateX, _Translate);
        Storyboard.SetTargetProperty(_TranslateAnimateX,
            new PropertyPath(TranslateTransform.XProperty));

        // translate (location Y)
        var _TranslateAnimateY = new DoubleAnimation
        {
            From = absolutePosition.Y,
            To = 40,
            Duration = TimeSpan.FromSeconds(.25)
        };

        _Storyboard.Begin();
    }

我找到了解决方案,带有缩放卡的面板没有水平/垂直对齐,我将其设置为左/上,使用CenterX/CenterY为0,移动现在是像素完美的

所有这些卡的容器元素是什么?我们能拍张截图吗?你现有的布局很可能与你的转换冲突。必须在c#或中。xaml也可以吗?主游戏板和卡都在一个复杂的网格结构中,但大的“缩放”卡位于一个大的全屏堆栈面板中,所有这些都是它自己的,所以它可以移动到任何地方,它只是没有在X处结束,是的,我更喜欢C语言,但如果有XAML解决方案,我可以转换成可以工作的代码