我希望显示带有动画的新窗口,将大小从0扩大到300.在Loaded
事件中,我输入了以下代码:
DoubleAnimation heightAnim = new DoubleAnimation(0,300,TimeSpan.FromSeconds(1));
BeginAnimation(HeightProperty,heightAnim);
DoubleAnimation WidthAnim = new DoubleAnimation(0,300,TimeSpan.FromSeconds(1));
BeginAnimation(WidthProperty,WidthAnim);
此代码工作正常。但是施工从窗户的左上角开始,并向右和向下扩展,直到它达到300 * 300的尺寸。 我希望它从中心开始,从那里扩展到所有4个方面。 我该怎么办?
P.S。在尝试Jogy回答后,我意识到获得此效果的更好方法是在ScaleX和ScaleY上应用动画,而不是在窗口大小上应用动画。因为当窗口大小上的动画时,用户将只看到部分内容,直到它达到完整大小。 你觉得......怎么样 ?什么是更好的方法?
提前致谢!
答案 0 :(得分:2)
为了达到这个效果,我意识到最好使用ScaleTransform
。在Loaded
事件中,代码应如下所示:
ScaleTransform scaleTransform = new ScaleTransform();
'grid'是Window下的元素,HorizontalElignment
和VerticalElignment
设置为'Center'
grid.LayoutTransform = scaleTransform;
DoubleAnimation heightAnim = new DoubleAnimation(0,1,TimeSpan.FromSeconds(1));
scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty,heightAnim);
DoubleAnimation WidthAnim = new DoubleAnimation(0,1,TimeSpan.FromSeconds(1));
scaleTransform.BeginAnimation((ScaleTransform.ScaleXProperty,WidthAnim);
答案 1 :(得分:1)
为Top和Left属性添加另外两个动画,如下所示:
DoubleAnimation topAnim = new DoubleAnimation(this.Top, this.Top - 150, TimeSpan.FromSeconds(1));
BeginAnimation(TopProperty, topAnim);
DoubleAnimation leftAnim = new DoubleAnimation(this.Left, this.Left - 150, TimeSpan.FromSeconds(1));
BeginAnimation(LeftProperty, leftAnim);
您可能还希望通过将动画置于故事板中来同步动画。