2

我在 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 度角,因为内容超出了窗口的大小。

由于动画与窗口本身而不是窗口的内容相关联,因此不应发生在该点的内部内容拉伸。

4

2 回答 2

1

我遇到过同样的问题。使用 时窗口不能增长ScaleTransform,因为它本质上是语义的。也就是说,它不会更改 WPF 计算的布局值,并且仅在设置布局后应用。

我对此的解决方案只是使窗口更大,边距透明。并删除它的边框。您可以在这里找到一个工作示例:WPF MessageBox

于 2013-09-15T06:59:15.337 回答
0

试试这个将宽度和高度设置为实际大小 <Window ... SizeToContent="WidthAndHeight" />

于 2013-09-15T18:49:36.530 回答