2011-11-03 84 views
0

我有一个应用程序在高分辨率显示器(1920x1080)上运行全屏。 约25%的屏幕是在屏幕上滚动图像的StackPanel。 (X位置带有双动画动画)与WPF差StackPanel性能

滚动非常滞后和跳动,并且可见撕裂。 这是一款全新的运行Win7 64bit的高端游戏笔记本电脑。

我不明白为什么表现如此糟糕。难道我做错了什么?这种动画是在CPU还是GPU上运行的?是否有更智能的方法在屏幕上滚动图像?

+2

你能告诉我们代码吗?他们是什么样的图像?当这种情况发生时,你看到CPU使用率会上升吗?你有没有尝试分析你的应用程序? – svick

+1

为什么使用StackPanel?尝试使用网格或画布。 –

+0

StackPanel中有多少物品?你是否在使用任何种类的UI Virutalization? – Rachel

回答

0

WPF可以进行硬件加速,但只适用于较新的视频卡驱动程序。一些车载驱动程序会默认回到软件渲染,这可能会感觉非常缓慢和笨重。至于撕裂,这是一种正常的视频卡设置,称为V-Sync。我会尝试将视频卡驱动程序更新到专有的驱动程序(nVidia,AMD等),并在卡上启用垂直同步。

您可以使用here解释的方法检查它是否属于软件或硬件渲染。

如果这样不能解决问题,我唯一能想到的其他可能性就是您的动画/渲染没有同步到GUI。

请参阅this msdn文章了解更多详情。

0

我已经看到可以解决此问题的一个诀窍是在您的页面上放置一个3D对象,将其侧面朝上并旋转,例如,对于4张图像,每个图像都有一个立方体。 是的旋转仍然需要GPU和处理器的时间,但它由WPF动画内部照顾,因此不需要在设置滚动后与代码交互。