独立的WPF应用程序可以创建一个看起来像Flash界面的界面吗?

时间:2010-08-19 16:12:59

标签: c# wpf flash user-interface

似乎WPF是作为Adobe Flash的应用程序答案而创建的。 Silverlight用于创建网页。但是,可以将相同的功能拉入独立的WPF应用程序中。 Scaleform允许Flash在非托管C ++游戏中使用。 WPF可以用于创建相同类型的接口吗?我读过的东西似乎让我相信它可以。但是,我还没有看到任何显示这种界面的应用程序截图。

2 个答案:

答案 0 :(得分:2)

绝对! WPF可以完成Flash在构建游戏UI方面所能做的所有事情,以及更多,更多。

WPF应用可以通过多种方式运行:

  • 作为使用纯托管代码的独立应用程序
  • 作为使用托管代码和本机代码(包括C ++代码和UI)的独立应用程序
  • 使用ClickOnce在浏览器中运行的Web应用程序(这称为XBAP)

(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)

是。它没有理由不能。你只需要做你的工作来创建和应用样式,使它看起来像你想要的任何东西。

这是工作,但它不是魔术。