В чем разница между GTK # и Windows Forms? - PullRequest
10 голосов
/ 28 апреля 2009

В чем разница между GTK # и формами окон? Они совершенно разные?

Спасибо

Ответы [ 4 ]

23 голосов
/ 29 апреля 2009

Gtk #

GTK # - это привязка .NET для инструментария Gtk +. Инструментарий написан на C для скорости и совместимости, а привязка GTK # обеспечивает простой в использовании объектно-ориентированный API-интерфейс для управляемого использования. Он активно разрабатывается проектом Mono, и существуют различные реальные приложения, которые его используют ( Banshee , F-Spot , Beagle , MonoDevelop ).

Как правило, приложения GTK # пишутся с использованием MonoDevelop , который предоставляет визуальный конструктор для создания графических интерфейсов GTK #.

Платформы: Unix, Windows, OSX

Плюсы:

  • Хорошая поддержка доступности через его наследие Gtk +.
  • Компоновка двигателя идеально подходит для обработки интернационализированная среда и приспосабливается к размеру шрифта без разрыва приложения.
  • Приложения интегрируются с Gnome Desktop.
  • API знаком разработчикам Gtk +.
  • Большое сообщество Gtk +.
  • Порт Win32 доступен, с родной вид на Windows XP.
  • API довольно стабильный в этом точка, и синтаксический сахар в настоящее время добавлено, чтобы улучшить его.
  • Исключительная поддержка Unicode.

Минусы:

  • Gtk + приложения работают как иностранные приложения на MacOS X.
  • Неполная документация.

Windows.Forms

Windows.Forms - это привязка, разработанная Microsoft к инструментарию Win32. В качестве популярного инструментария, используемого миллионами разработчиков Windows (особенно для внутренних корпоративных приложений), проект Mono решил создать совместимую реализацию (Winforms), чтобы эти разработчики могли легко переносить свои приложения для запуска на Linux и других платформах Mono.

В то время как реализация .Net является привязкой к инструментарию Win32, реализация Mono написана на C #, чтобы позволить ей работать на нескольких платформах. Большая часть API Windows.Forms будет работать на Mono, однако некоторые приложения (и особенно сторонние элементы управления) иногда обходят API и P / Invoke прямо в Win32 API. Эти звонки, вероятно, придется изменить, чтобы работать на Mono.

Как правило, приложения Winforms пишутся с использованием Microsoft Visual Studio или SharpDevelop , которые предоставляют визуальный конструктор для создания графических интерфейсов Winforms.

Платформы: Windows, Unix, OSX

Плюсы:

  • Для этого существует обширная документация (книги, учебные пособия, онлайн документы).
  • Большое сообщество активных разработчиков.
  • Самый простой маршрут для портирования существующего Приложение Windows.Forms.

Минусы:

  • Интернационализация может быть хитрой с фиксированными раскладками.
  • На платформах, отличных от Windows, выглядит чуждо.
  • Код, который вызывает Win32 API, не является портативный.

Источник: Выбор правильного набора инструментов

8 голосов
/ 28 апреля 2009

Они оба являются инструментами GUI, каждый из которых имеет свои сильные и слабые стороны. Из моего опыта:

  • Winforms не требует установки в Windows, Gtk # требует установки в Windows.
  • У Winforms есть дизайнер в Visual Studio, у Gtk # есть автономный дизайнер и интегрированный дизайн в MonoDevelop.
  • Winforms привязан к Windows, Gtk # является кроссплатформенным.
  • Winforms медленно и мерцает. Gtk быстрее.
  • Большинство элементов управления Winforms являются оболочками вокруг стандартных элементов управления Windows и предлагают очень ограниченную функциональность. Виджеты Gtk более функциональны.
  • Gtk позволяет создавать формы и виджеты со сложным макетом. Winforms предлагает только тривиальные варианты компоновки, а FlowLayout & TableLayout и AutoSize слишком слабы, чтобы иметь возможность иметь сложные формы, которые изменяют размер и автоматически приспосабливаются к разным размерам шрифтов и разным разрешениям.
  • Cairo работает быстрее и имеет больше возможностей, чем Gdi + (Cairo поддерживает вывод и ввод файлов большего количества типов, например svg, pdf)
  • Gtk # с открытым исходным кодом, winforms не
  • У Winforms и Gtk # есть сторонние элементы управления / виджеты (однако, с Gtk # они меньше нужны, потому что базовые элементы управления действительно работают).

Короче говоря, я бы не рекомендовал использовать Winforms (кроме случаев, когда есть веская причина не иметь больше зависимостей, чем .NET FW), но использовать Gtk # или WPF.

2 голосов
/ 28 апреля 2009

Это разные графические наборы инструментов для создания оконных приложений с различным происхождением.

GTK # - это привязка для библиотеки GTK, в первую очередь предназначенная для linux / unix. Он также работает на Windows, но это не родная среда, для которой он был разработан.

Winforms - еще один инструментарий, этот от Microsoft.

Это абсолютно разные API для достижения одинаковых результатов, но каждый лучше подходит для платформы.

Если вы ищете многоплатформенное оконное управление в .net, Qt может быть вариантом теперь, когда он получил LGPLed.

0 голосов
/ 28 апреля 2009

Короче говоря: Да

Оба являются GUI-Tookits, но WinForms (как следует из названия) был в основном разработан для Windows. GTK был разработан для Gimp и является подходом для мультиоснащенного инструментария GUI.

Если ваше приложение работает только на Windows, в большинстве случаев вам следует использовать WinForms.

Если ваше приложение будет работать под разными ОС (например, linux, bsd, windows, macos, ...), вы предпочтете GTK.

Для лучшего объяснения смотрите здесь .

...