我在WPF中有一个窗口,我想用ShowDialog显示它,当窗口显示时,它应该有一个缩放动画。我成功地制作了动画,除了一件事外,所有作品都很棒:
当窗口接近它的完全缩放状态和放松功能开始时,窗口的外部边缘似乎超出了实际的窗口边界并被剪裁。我如何使用这个缩放动画与放松,而不是它被剪裁?
这是我使用的缩放动画:
<DoubleAnimation Storyboard.TargetProperty="(Window.RenderTransform).(ScaleTransform.ScaleX)"
BeginTime="0:0:0.0" Duration="0:0:0.4" From="0" To="1">
<DoubleAnimation.EasingFunction>
<BackEase EasingMode="EaseOut" Amplitude="0.25" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
<DoubleAnimation Storyboard.TargetProperty="(Window.RenderTransform).(ScaleTransform.ScaleY)"
BeginTime="0:0:0.0" Duration="0:0:0.4" From="0" To="1">
<DoubleAnimation.EasingFunction>
<BackEase EasingMode="EaseOut" Amplitude="0.25" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>编辑:它看起来剪辑的原因是放松函数没有移动窗口,而是移动窗口中的内容;至少它看起来是这样做的。该窗口具有自定义样式,顶部的角是圆形的。实际窗口有透明的背景。因此,当放松功能在内部内容超过实际窗口的大小和硬90度角显示,因为内容是延伸到窗口的大小。
在这一点上伸展的内部内容不应该发生,因为动画是绑定到窗口本身,而不是窗口的内容。
发布于 2013-09-15 06:59:15
我也有过同样的问题。使用ScaleTransform时窗口不能增长,因为它本质上是语义的。也就是说,它不会改变WPF计算的布局值,只在布局设置之后应用。
我解决这一问题的办法是使窗口变大,并具有透明的边距。移除边界。您可以在这里找到一个有用的示例:WPF MessageBox
发布于 2013-09-15 18:49:36
尝试将宽度和高度设置为实际大小的<Window ... SizeToContent="WidthAndHeight" />
https://stackoverflow.com/questions/18808298
复制相似问题