2010-08-19 56 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使用和綁定非託管對象。

相關問題