在.Net Compact Framework上使用面板模拟动画

时间:2009-12-10 17:19:20

标签: c# winforms animation compact-framework

我正在使用 .Net Compact Framewor 2.0 SP2 C#开发 Windows Mobile 5.0或更高版本

我正在尝试“动画”在Timer_Tick事件中更改其位置的五个面板,但这些面板移动非常糟糕。他们像跳跃一样移动。

我做错了什么?

谢谢。

2 个答案:

答案 0 :(得分:2)

不确定以上关于使用矩形的注释,但我们使用双缓冲。简而言之,您创建了一个位图(大小与您需要的大小相同,在您的情况下,它将是面板的大小)。创建后,从位图创建一个Graphics对象。此时你已经创建了一个屏幕外缓冲区。

渲染:
对于OnPaint方法中的所有绘图调用(DrawString等),请使用您创建的位图中的图形对象。此刻,你正在吸引记忆,而不是屏幕。

绘图完成后,将屏幕外缓冲区复制到屏幕上。为此,请使用传递给OnPaint方法的Graphics对象的DrawImage方法。此调用的参数是为屏幕外缓冲区创建的位图。


为什么这样做?
您所看到的闪烁称为“撕裂”。你的眼睛正在将实际绘图捕捉到屏幕上。双缓冲区通过对内存进行全部绘制来限制此操作,一旦完成,它会在1次调用中将其复制到屏幕。

希望这有帮助!

答案 1 :(得分:0)

你是在换屏幕面板吗?这可能需要屏幕验证和重新绘制,这是灾难的秘诀。设备甚至可能没有硬件加速(仿真器显示驱动程序真的非常糟糕)。

如果你想在移动设备上“动画”,你将不得不画一个屏幕外的缓冲区,然后一次性将结果blit到屏幕上,并尝试保持你的blit尽可能小

MSDN有a decent article on animation您可能想要查看。