【发布时间】:2011-02-27 12:31:59
【问题描述】:
WPF Windows-XP SP3
我遇到了一个简单的 WPF 动画问题。
我使用以下 Xaml 代码(在 XamlPad 和 WPF 项目中):
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Border Name="MyBorder" BorderThickness="10" BorderBrush="Blue" CornerRadius="10" Background="DarkRed" >
<Rectangle Name="MyRectangle" Margin="10" StrokeDashArray="2.0,1.0" StrokeThickness="10" RadiusX="10" RadiusY="10" Stroke="Black" StrokeDashOffset="0">
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="StrokeDashOffset" From="0.0" To="3.0" Duration="0:0:1" RepeatBehavior="Forever" Timeline.DesiredFrameRate="30" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</Border>
</Page>
它具有使边框围绕矩形动画的效果。重新启动机器后,此动画非常流畅。然而,我倾向于让我的机器一直开着,经过一段时间后(我不知道多长时间),动画开始卡顿并变得断断续续。
我以为可能是内存或资源问题,但在关闭所有其他应用程序和任何似乎不必要的服务后,卡顿仍然继续。不过重启系统后,动画又流畅了!
我在 WPF 应用程序或 XamlPad 中遇到相同的症状。就应用程序而言,无论是在调试器中运行还是直接运行可执行文件,似乎都没有任何区别。
我在这个链接上应用了补丁:http://support.microsoft.com/kb/981741,我认为它已经解决了这个问题,但似乎没有。
我看到一些帖子可能表明使用透明度可能会影响动画,但正如您所见,我的 xaml 不使用透明度。
谁能给我一些关于如何确定问题所在的建议?是否有任何 WPF 诊断工具可以提供帮助?
更新:我检查了我的视频驱动程序,它们是最新版本。 (英伟达 GeForce 8400 GS)
【问题讨论】:
-
您是否需要重新启动系统(即重新启动 prog 没有帮助)?这看起来像是驱动程序 (DirectX) 问题。
-
@Chris Dunaway:+1 表示经过大量努力后提出的问题。
-
仅供参考:我将其复制粘贴到一个新项目中并让它运行几个小时。没问题。 Vista/32
-
我找不到我阅读它的链接,但它基本上说:WPF动画可能在Windows XP上很烂。关于如何处理(或不处理)硬件加速?
-
到目前为止,我已经在 Windows7 x64 和 Windows XP SP3 上运行了一个小时...目前还没有问题。我正在运行 perfmon 以防万一在 XP 系统上查看资源利用率如果确实变慢了。
标签: wpf performance animation windows-xp-sp3