似乎WPF是作为Adobe Flash的应用程序答案而创建的。 Silverlight用于创建网页。但是,可以将相同的功能拉入独立的WPF应用程序中。 Scaleform允许Flash在非托管C ++游戏中使用。 WPF可以用于创建相同类型的接口吗?我读过的东西似乎让我相信它可以。但是,我还没有看到任何显示这种界面的应用程序截图。
答案 0 :(得分:2)
绝对! WPF可以完成Flash在构建游戏UI方面所能做的所有事情,以及更多,更多。
WPF应用可以通过多种方式运行:
(Silverlight是WPF的一个子集,可以作为独立应用程序或在浏览器中运行,但不能包含本机代码)
WPF真的很酷的是,与Flash不同,它可以直接无缝地整合C ++代码和DirectX / OpenGL UI元素。它还可以直接调用代码并与非托管C ++代码共享数据结构。对于Flash,这需要一个专门的运行时,例如Scaleform,并不完全兼容。此外,与非托管代码的连接并不干净。
由于与非托管代码和UI集成的功能直接构建到WPF中,因此不需要像Scaleform这样的外部供应商来构建任何东西。所以没有人在使用基于WPF的UI环境收集游戏的屏幕截图,因为没有人试图出售任何东西。
以下是通常的做法:
<Window ...>
<Grid>
<WindowsFormsHost x:Name="host"/> <!-- Unmanaged code will be child of this hWnd -->
<Grid>
<!-- WPF UI elements here -->
</Grid>
</Grid>
</Window>
代码:
InitializeUnmanagedUI(host.Handle);
这就是它的全部内容。
就数据而言,托管和非托管组件可以轻松使用彼此的对象:非托管代码可以通过IJW和C ++ / CLR使用托管对象。托管代码可以通过COM使用和绑定非托管对象。
答案 1 :(得分:1)
是。它没有理由不能。你只需要做你的工作来创建和应用样式,使它看起来像你想要的任何东西。
这是工作,但它不是魔术。