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