【发布时间】:2009-03-16 11:31:23
【问题描述】:
我拿了这个WPF-VS2008 ScreenSaver template 并开始制作一个新的屏幕保护程序。我对 winForms 平台 (GDI+) 屏幕保护程序有一些经验,所以我对 WPF 有点迷失。
- 我的屏幕保护程序的背景元素是 Canvas。
- DispatcherTimer 滴答设置为 33 毫秒,即 ~ 30 FPS。
- Background-color 只是一个巨大的 LinearGradientBrush。
- 在我的屏幕上(每个可用屏幕,在我的本地计算机上我有 2 个)用随机计算(初始化)背景颜色 + Alpha 通道绘制的 n 椭圆。它们都在 Canvas 的儿童系列中。
- 我正在使用一些逻辑在屏幕上移动这些省略号(每个 DispatcherTimer 滴答声)。我按椭圆移动,然后为每个椭圆调用 Canvas.SetLeft(...) 和 Canvas.SetTop(...)。
- 如果 N(椭圆数)大于 70-80,我开始注意到图形速度变慢。
现在,我想知道,在选择更高的 N 值时,我是否可以做些什么来提高图形的平滑度?我可以在移动椭圆之前“冻结”“某物”并在完成后“解冻”“某物”吗?或者我还有什么其他的办法吗?
并不是说我对提到的性能下降会过于挑剔 - 因为当 N==50 时,一切都会正常运行。即使椭圆都在同一个地方(大量透明的东西),也完全没有问题。
【问题讨论】: