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

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

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

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

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

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

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

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

注意:我确实在WPF中写了一个简单的幻灯片放映方式, 让它顺利工作的关键是在后台线程中加载图像并冻结它 。

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

实际上XNA运行得很好。 例如: 这是使用XNA可以实现的(高级)示例。 社区非常有帮助,XNA具有巨大的潜力。

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

  • 使用C#创建屏幕保护程序 – 第1部分
  • 使用C#创建屏幕保护程序 – 第2部分

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

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

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

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