我在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度角。
由于动画与窗口本身相关联而不是窗口内容,因此不应该在此时拉伸内部内容。
答案 0 :(得分:1)
我有同样的问题。使用ScaleTransform
时,窗口无法增长,因为它本质上是语义的。也就是说,它不会更改WPF计算的布局值,只会在布局设置后应用。
我的解决办法就是让窗户更大,边距更透明。并删除它的边框。您可以在此处找到一个有效的示例:WPF MessageBox
答案 1 :(得分:0)
尝试将宽度和高度设置为实际大小
<Window ... SizeToContent="WidthAndHeight" />