在C#WinForms中,无论何时在这里或那里制作一个小游戏,我都会编写一个快速类,它是System.Windows.Forms.Panel的子类,在构造函数中,将DoubleBuffered设置为true.然后你可以覆盖OnPaint方法来显示游戏元素.我已经做了2到3年了,但我真的想拥抱WPF和XAML,我非常喜欢它用于常规应用程序布局.在WPF中这样做有什么相同之处?
不是您寻求的答案,而是:您不应该将 WPF 用于游戏。坚持使用 Forms(它不会被 MS 抛弃,因为 WPF 不会取代 Forms),或者如果您想进入下一个级别,请尝试 XNA。
更新:我昨天很快回答了这个问题,因为我很着急,而且我也研究了WPF来做游戏,所以我不想在没有正确答案的情况下离开OP。
这是交易:
WPF 的目标是简化丰富的 UI 开发。首先,MS 理解表单将行为与表示混合在一起的编码方式。这对于应用程序设计和可维护性来说都是不好的。此外,在 Forms 中,一切都必须编码;图书馆本身为用户做的事情很少。例如,如果您想要一个具有不同外观的按钮,则必须重写其Draw方法,然后以某种方式绘制代表它的任何图形。
使用 WPF,行为与表示分离。例如,什么是按钮?在 Windows 中,我们知道它是一个带有圆角的盒子,但环顾四周...您的鼠标滚动也是一个按钮,尽管它看起来与 Windows 默认按钮完全不同。作为一个按钮意味着具有特定的行为(主要是点击),而不是看起来像一个盒子。对于 WPF,这非常简单。您定义一个按钮,然后使用图像或文本将其呈现给用户。
当然,这一切都是有代价的;例如,WPF 比 Forms 慢。游戏需要快,尽量不要浪费资源。在游戏中,每个行为都倾向于编码(当然不是 UI),每个演示都是自定义的(2D 图形或 3D 对象),因此无论如何您都必须进行大量编码。因此,您正在使用一项昂贵的技术,但却放弃了它的大部分好处。
但我不是专家。您可以查看此博客,其中一位前 Microsoft 员工尝试使用 WPF 进行游戏近两年。他的结论是:
您可能已经注意到该博客已经有一段时间没有更新了。WPF 的性能似乎无法满足严肃游戏的要求,我已经认输了,并将继续使用 XNA 来开发游戏。我只是认为不值得与 WPF 框架对抗......
从那里我得出了大部分结论。
| 归档时间: |
|
| 查看次数: |
13662 次 |
| 最近记录: |