Абсолютно! WPF может делать все, что Flash может делать при создании игровых интерфейсов, и многое, многое другое.
Приложения WPF могут работать несколькими способами:
- Как отдельное приложение, использующее чистый управляемый код
- В качестве автономного приложения, использующего как управляемый, так и собственный код (включая код C ++ и пользовательский интерфейс)
- Как веб-приложение, работающее в браузере с использованием ClickOnce (это называется XBAP)
(Silverlight - это подмножество WPF, которое может работать как отдельное приложение или в браузере, но не может содержать собственный код)
Что действительно круто в WPF, так это то, что, в отличие от Flash, он может напрямую и без проблем включать код C ++ и элементы интерфейса DirectX / OpenGL. Он также может напрямую вызывать код и обмениваться структурами данных с неуправляемым кодом C ++. С Flash это требует специализированной среды выполнения, такой как Scaleform, и не полностью совместимо. Кроме того, соединение с неуправляемым кодом не такое чистое.
Поскольку возможность интеграции с неуправляемым кодом и пользовательским интерфейсом встроена непосредственно в WPF, для создания чего-либо не требуется внешний поставщик, такой как Scaleform. Так что никто не собирает скриншоты игр в среде пользовательского интерфейса на основе WPF, потому что никто ничего не пытается продать.
Вот как это обычно делается:
<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.