Может ли отдельное приложение WPF создать интерфейс, похожий на интерфейс Flash? - PullRequest
1 голос
/ 19 августа 2010

Похоже, что WPF был создан как ответ приложения на Adobe Flash.Silverlight используется для создания веб-страниц.Но можно ли эту же функциональность использовать в автономном приложении WPF.Scaleform позволяет использовать Flash в неуправляемых играх C ++.Можно ли использовать WPF для создания интерфейсов того же типа?То, что я прочитал, кажется, заставляет меня верить в это.Но я не видел скриншотов приложений, которые показывают такой интерфейс.

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Абсолютно! 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.

1 голос
/ 19 августа 2010

Да.Там нет причин, почему это не могло.Вам просто нужно сделать свою работу, чтобы создать и применить стили, которые будут выглядеть так, как вы хотите.

Это работа, но не волшебство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...