簡體   English   中英

獨立的WPF應用程序可以創建類似於Flash接口的接口嗎?

[英]Can a standalone WPF application create an interface that looks like a Flash interface?

WPF似乎是作為Adobe Flash的應用程序答案而創建的。 Silverlight用於創建網頁。 但是,可以將相同的功能引入到獨立的WPF應用程序中嗎? Scaleform允許Flash在非托管C ++游戲中使用。 WPF可以用於創建相同類型的接口嗎? 我讀過的東西似乎使我相信它可以。 但是,我還沒有看到任何顯示這種界面的應用程序的屏幕截圖。

絕對! WPF可以完成Flash在構建游戲UI方面可以做的一切,甚至更多。

WPF應用程序可以通過幾種方式運行:

  • 作為使用純托管代碼的獨立應用程序
  • 作為使用托管代碼和本機代碼(包括C ++代碼和UI)的獨立應用程序
  • 作為使用ClickOnce(稱為XBAP)在瀏覽器中運行的Web應用程序

(Silverlight是WPF的子集,可以作為獨立的應用程序運行或在瀏覽器中運行,但不能包含本機代碼)

與Flash不同,WPF真正有趣的是,它可以直接無縫地合並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使用和綁定非托管對象。

是。 沒有理由不能這樣做。 您只需要做工作即可創建和應用樣式,使其看起來像您想要的任何樣式。

這是工作,但不是魔術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM