C#:创建图形屏幕保护程序

时间:2009-06-08 08:20:54

标签: c# wpf opengl graphics directx

我正在考虑创建一个屏幕保护程序。我有完整的东西,它的图形和后端类型已经准备好了。但我不太确定如何在代码中获取图形。

我想要的是带有一点动作的图像的幻灯片放映(有点像媒体中心的幻灯片放映)以及顶部的一些浮动文字和形状。形状有些半透明。

我目前在WinForms中制作了一个非常简单的静态幻灯片。只是一个简单的应用程序,全屏显示一些图像,并假装以一种hackish方式淡入淡出。但它制作得不是很好,性能也不是很好。例如,为了防止滞后,我在图像顶部淡入黑色方块,而不是在实际图像中淡入淡出。也许愚蠢,但它有点工作:p

无论如何,我想做得更好。但不知道从哪里开始。 WPF是一个很好的解决方案吗?或者我应该研究DirectX或OpenGL?这个东西可以用XNA很好地处理,还是那个游戏太棒了?

6 个答案:

答案 0 :(得分:1)

我猜XNA效果很好。顺便说一句,C#Express中有一个示例屏幕保护程序。

答案 1 :(得分:1)

实际上XNA工作得很好。例如:this是可以使用XNA制作的(高级)示例。社区非常有帮助,XNA有很大的潜力。

答案 2 :(得分:1)

WPF并不是一个坏主意。它利用DirectX和硬件加速来制作动画和效果。

如果你本地编写这种东西(针对directx或opengl),你将获得更好的性能,但编写它的成本会高得多。你很可能无论如何都不需要这种优势。

看看hanselman的baby smash(这是一个带有动画的全屏wpf应用程序),以了解你可以用wpf做些什么。

注意:我确实在WPF中写了一个简单的幻灯片放映,让这个工作顺利进行的关键是在后台线程和freezing it中加载图像。

答案 3 :(得分:1)

几周前,我写了一篇由两部分组成的文章,描述了如何使用 GDI + 创建Windows屏幕保护程序。我没有在屏幕保护程序中显示幻灯片,而是随机绘制形状。然而,我确实解释了为Windows创建屏幕保护程序的基本原理,如果您之前从未创建过屏幕保护程序,那么应该会有所帮助。

答案 4 :(得分:1)

如果您只想使用GDI和GDI +,我写了一些关于如何在渲染图像并将其绘制到屏幕时加快速度的信息here。在上面的链接中也有完整功能的屏幕保护程序源代码(我在挖掘了一些更加模糊的屏幕保护程序细节后自己编写),以防万一。

答案 5 :(得分:0)

最近我完成了我的第一个WPF(我想看看,如何用WPF完成)屏幕保护程序。您可以在YouTube上查看。试着看HD版本。

虽然我从未尝试过XNA,但到目前为止我对WPF感到非常满意。简单灵活。但我想你可能不会得到XNA性能(或者我错了吗?)。

您可以谷歌开始使用GDI +或WPF ScreenSaver模板。