首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF断断续续动画

WPF断断续续动画
EN

Stack Overflow用户
提问于 2010-06-04 04:56:32
回答 4查看 3.2K关注 0票数 9

WPF Windows-XP SP3

我有一个简单的WPF动画的问题。

我使用以下Xaml代码(在XamlPad中,也在WPF项目中):

代码语言:javascript
复制
<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诊断工具可能会有所帮助?

更新:我已经检查了我的显卡驱动程序,它们是最新版本。(nVidia GeForce 8400 GS)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-10 21:11:13

在运行你的动画一天多一点后,我没有看到任何真正可怕的事情发生,尽管内存使用率略有上升。

我最后做的是用kaxaml在XP SP3上运行你的例子,然后用perfmon做一些差劲的性能检查。

如果您以前没有使用过perfmon,只需从开始菜单运行-> perfmon即可。它可能会列出一些已经在列表中的计数器,但如果您不想监视这些值,可以单击每个计数器并将其删除。我不认为在您的情况下CPU利用率是问题所在,但您可以将其保留在那里以防万一。

右键单击任意位置,选择“添加计数器”,然后在“性能对象”下选择".NET CLR Memory“。在右侧,选择感兴趣的可执行文件(在我的示例中,它是"Kaxaml")。在左侧选择"# Bytes in all Heaps“。我还会将采样率更改为更大的值,例如300秒,这样您就可以更好地了解您正在经历减速的一段时间内的变化率。

这可能不会帮助您找到减速,但这是合理的第一步。也许你也应该下载ANTS 5 profiler的试用版,看看它是否捕捉到了什么奇怪的东西。

票数 2
EN

Stack Overflow用户

发布于 2010-06-10 23:16:41

我已经让动画运行了30多个小时,它没有变慢或变得不稳定,但我运行的是Win 7。我也让它在XP虚拟机上运行了几个小时,它运行得很好。

我最好的猜测是:视频驱动

理由:显卡驱动程序是系统中最复杂的驱动程序,与计算机的整体性能有很大关系。虽然可能是动画调度计时器落后了,但除非您正在使用大量CPU,否则这是不太可能的。

建议:

  • 检查驱动程序更新并尝试不同的视频卡(如果possible)
  • Crack打开PerfMon并抓取每个可能的WPF & DirectX计数器并随时间监视
票数 1
EN

Stack Overflow用户

发布于 2010-06-10 13:19:18

我认为在使用WPF时,你会遇到渲染效果不太好的机器。我在我的笔记本电脑上试过了,它没问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2969708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档