2010-08-19 59 views
1

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

+0

WPF远不止是Flash的答案!它是Windows Forms桌面应用程序框架的替代品。很显然,它可以做独立的应用程序。这真的是个问题 - 或者你问如何将WPF与非代码混合 - 这有点棘手。 – 2010-08-19 16:18:50

+0

作为独立WPF应用程序的示例 - 请查看Visual Studio。 VS2010 UI是WPF。 – 2010-08-19 16:19:32

回答

1

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

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

2

绝对! WPF可以完成Flash在建立游戏用户界面时所能做的一切,以及更多。

WPF appliations可以运行几种方法:

  • 作为一个独立的应用程序中使用纯托管代码
  • 作为一个独立的应用程序中使用托管和本机代码(包括C++代码和UI)
  • 作为Web应用程序在浏览器中使用ClickOnce(这被称为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使用和绑定非托管对象。

相关问题