0
我试图创建一个缩放并将元素移动到特定位置的故事板。基本的想法是有一排6张小卡片,点击一张卡片将放大一张更详细的图像,从小卡片的位置和大小开始,最后以大卡为中心。同时缩放和移动项目
该卡不会在我指定的X,Y位置结束,我相信因为缩放转换也在移动它。我看到矩阵变换可能会起作用,但至少在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();
}
什么是所有这些卡的容器元素?我们可以得到一个截图吗?您现有的布局很可能与您的转换冲突。 –
一定在c#中还是在.xaml中也会这样呢? –
主游戏板和卡片处于一个复杂的网格结构中,但大型全屏幕堆叠面板中的大型“缩放”卡片全部都在它自己的上面,所以它可以在任何地方移动,它只是不会结束于X ,YI指定 – Jason