Я пытаюсь создать раскадровку, которая масштабирует и перемещает элемент в определенную позицию. Основная идея состоит в том, что есть строка из 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();
}
Что представляет собой контейнерный элемент всех этих карт? Можем ли мы получить скриншот? Скорее всего, ваш существующий макет конфликтует с вашими преобразованиями. –
обязательно в C# или в .xaml также будет делать? –
Основная игровая доска и карты находятся в сложной структуре сетки, но большие «увеличенные» карты в большой панели полноэкранного стека все на своем собственном, чтобы он мог двигаться в любом месте, он просто не заканчивается на X , YI указать – Jason