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