Написание кроссплатформенного приложения со сложным графическим интерфейсом - PullRequest
2 голосов
/ 10 июля 2010

Я бы хотел разработать приложение со сложным графическим интерфейсом (комбинированный список с анимацией, диаграммы со сплайнами, прозрачные слои и т. Д.). У меня хороший опыт работы с C # 2.0, и я изучаю WPF, но я читал, что, к сожалению, нет никакого плана по переносу WPF в Mono.

  • Если я придерживаюсь C # и создаю пользовательские элементы управления графическим интерфейсом, используя OpenGL (через OpenTK ) , я чувствую, что это будет тяжелая работа ( интеграция с GTK #, отладка, трудно использовать для разработки форм).

  • Я могу использовать Java (с JOGL) , но я не очень разбираюсь в этом, и я не знаю о проблемах производительности.

  • Последний вариант - C ++ , но я должен сделать большую ревизию (годы с тех пор, как я в последний раз использовал его), и мне трудно разрабатывать GUI и переносимые приложения на C ++. (Возможно, я ошибаюсь! Тем не менее, я очень боюсь разрабатывать такие сложные приложения на этом языке.)

Какой ваш совет? Мне лучше выбрать C # + OpenTK, Java + JOGL или вернуться в C ++?

Ответы [ 8 ]

7 голосов
/ 10 июля 2010

Я бы пошел с Qt. Взгляните на http://qt.nokia.com/products/. Если вы боитесь C ++ (но нет причин бояться его), вы можете попробовать Java Swing. Я думаю, что это лучшие варианты для разработки многоплатформенного графического интерфейса рабочего стола.

4 голосов
/ 10 июля 2010

Я бы предложил Mono и GTK #.Разработка приложений с использованием .Net намного эффективнее, чем в C ++ vanilla.Конечно, вы должны придерживаться C # 3.0 и .Net 2.0 (реализованы некоторые функции из 3.5, такие как LINQ).Но он по-прежнему дает вам гораздо больше, чем мог бы дать вам C ++, например, QT.

1 голос
/ 10 июля 2010

Go C # для производительности.Ничего против C ++, но это немного многословно.Что касается библиотеки GUI, я думаю, что WinForms раньше работали на Mono.В качестве альтернативы GTK #.

0 голосов
/ 25 октября 2010

На моей повседневной работе (известная микропроцессорная компания) мы разрабатываем сложные инженерные приложения с использованием Java, Eclipse RCP и Java OpenGL. Производительность хорошая - мы можем легко получить много миллионов полигонов в секунду и до 100 кадров в секунду. SWT-виджеты в Eclipse достаточно быстрые, и нам не нужно было отображать какие-либо пользовательские элементы управления с помощью JOGL.

У меня есть набор обучающих программ, которые показывают, как начать работать с этим видом программирования. Серия начинается с http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/.

0 голосов
/ 13 июля 2010

Silverlight работает на Windows / Mac / Linux и некоторых карманных компьютерах и переносится на другие карманные компьютеры.Я верю, что Silverlight в конечном итоге будет перенесен на все популярные устройства.

Silverlight - это:

  1. Гораздо более мощный, чем Flex / Flash / Air.
  2. Многое,гораздо более мощный, чем Qt.
  3. Смешно более мощный, чем GTK + или GTK #.
  4. Смешно более мощный, чем JOGL.

Silverlight обладает всеми функциями, которые у вас естьзапрашивается.

Silverlight очень хорошо работает с C #, который является гораздо более производительным языком для работы, чем C ++.

Silverlight - это, по сути, очень большое подмножество WPF, так что если вы уже знаете WPF, вы уже знаете Silverlight.

Если вам абсолютно не требуется поддержка iPhone / iPad, я думаю, что решение совершенно очевидно.

См. это сравнение WPF и Cocoa , чтобы получить некоторыеощущение того, как WPF / Silverlight сравнивается с подобными Qt, Flash / Flex / Air и GTK #, причем все они используют примитивную объектную модель, похожую на WinForms, аналогичную той, которую использует Cocoa.

0 голосов
/ 10 июля 2010

Во-первых, не используйте C # для чего-либо, что должно быть переносимым.Mono - плохая опция для GUI по двум причинам:

  1. Mono всегда на несколько шагов отстает от .NET.
  2. Mono не поддерживает WPF, поэтому единственный способ разработки GUI - это использованиечто-то вроде GTK #.

Мое личное мнение - используйте C ++.Это даст вам очень хорошую мобильность и независимость.

У вас есть два варианта:

  • Qt4 - очень хороший инструментарий GUI, делает разработку GUI очень простой и легко переносимой.
  • GTKmm - тоже очень хороший инструментарий, но в Windows он выглядит менее естественным.

Кроме того, в Java есть инструментарий Swing, который поставляется с JDK и доступен на всех платформах Java, даже очень странных, таких какOpenVMS.

0 голосов
/ 10 июля 2010

Должна ли мультиплатформа включать iDevices?Это может быть в Интернете?Это 2 вопроса, на которые вы должны ответить в первую очередь.

Если вы можете жить без поддержки iPad / iPhone, тогда Flex / Flash / Air - хороший вариант для графических вещей.Он мультиплатформенный и легко интегрируется в сеть.Вероятно, ваш лучший вариант для этого случая с приведенными ограниченными деталями.

Qt также может работать для вас, хотя я не могу точно сказать, облегчит ли это графическая библиотека.Я лично никогда не работал с этим, поэтому другие должны были бы ответить на это.Но поскольку он находится в C ++, вы можете использовать и другие библиотеки.

Java Swing звучит грубо для меня для этого комплекса графического интерфейса.Делать некоторые базовые вещи не так уж и плохо, но если вы ожидаете опыта, подобного C #, я думаю, вы будете разочарованы.Конечно, личное мнение.

Наконец, если это может быть веб-приложение, почему бы не придерживаться C # и Silverlight?Решение .NET может работать хорошо для вас, так как вы уже изучаете его.

0 голосов
/ 10 июля 2010

Я бы не советовал использовать wpf, поскольку это платформа, зависящая от платформы.Silverlight может быть лучшим вариантом.

Но если вы разрабатываете веб-приложение, jquery будет хорошим вариантом, вы также можете рассмотреть Adobe Flex и Adobe Air;http://www.adobe.com/products/air/

...