2009-04-28 5 views

Antwort

22

Gtk#:

GTK # ist ein .NET für das Toolkit GTK + zu binden. Das Toolkit ist aus Gründen der Geschwindigkeit und Kompatibilität in C geschrieben, während die GTK # -Bindung eine benutzerfreundliche, objektorientierte API für die verwaltete Verwendung bietet. Es ist in aktiver Entwicklung durch das Mono-Projekt und es gibt verschiedene reale Anwendungen, die es verwenden (Banshee, F-Spot, Beagle, MonoDevelop).

Im Allgemeinen werden GTK # -Anwendungen mit MonoDevelop geschrieben, die einen visuellen Designer zum Erstellen von GTK # GUIs bietet.

Plattformen: Unix, Windows, OSX

Pro:

  • Gute Unterstützung für die Zugänglichkeit durch ihr Erbe Gtk +.
  • Layout-Engine ideal für die Handhabung internationalisierten Umgebungen, und passt sich an Schriftgröße ohne zu brechen Anwendungen.
  • Anwendungen integrieren mit dem Gnome Desktop.
  • API ist den Gtk + Entwicklern bekannt.
  • Große Gtk + -Community.
  • Ein Win32-Port ist verfügbar, mit natives Aussehen auf Windows XP.
  • Die API ist ziemlich stabil in diesem Punkt, und syntaktischer Zucker wird hinzugefügt, um es zu verbessern.
  • Unicode-Unterstützung ist außergewöhnlich.

Nachteile:

  • Gtk + apps laufen wie ausländische Anwendungen auf MacOS X.
  • Unvollständige Dokumentation.

Windows.Forms:

Windows.Forms ist ein von Microsoft zu dem Win32-Toolkit entwickelt Bindung. Als beliebtes Toolkit, das von Millionen von Windows-Entwicklern verwendet wird (speziell für interne Unternehmensanwendungen), entschied sich das Mono-Projekt für eine kompatible Implementierung (Winforms), die es Entwicklern ermöglicht, ihre Anwendungen einfach auf Linux und anderen Mono-Plattformen zu portieren.

Während die .Net-Implementierung eine Bindung an das Win32-Toolkit darstellt, wird die Mono-Implementierung in C# geschrieben, damit sie auf mehreren Plattformen ausgeführt werden kann. Die meisten Windows.Forms-APIs arbeiten mit Mono, jedoch umgehen einige Anwendungen (und insbesondere Steuerelemente von Drittanbietern) gelegentlich die API und P/Invoke direkt an die Win32-API. Diese Anrufe müssen wahrscheinlich geändert werden, um an Mono zu arbeiten.

Im Allgemeinen werden Winforms-Anwendungen mit Microsoft Visual Studio oder SharpDevelop geschrieben, die beide einen visuellen Designer zum Erstellen von Winforms-GUIs bereitstellen.

Plattformen: Windows, Unix, OSX

Pro:

  • Umfangreiche Dokumentation gibt es für sie (Bücher, Tutorials, Online-Dokumente).
  • Große Community von aktiven Entwicklern.
  • Einfachste Route, um eine vorhandene Windows.Forms-Anwendung zu portieren.

Nachteile:

  • Internationalisierung kann mit festen Layouts schwierig sein.
  • Sieht auf Nicht-Windows-Plattformen fremd aus.
  • Code, der die Win32-API aufruft, ist nicht portabel.

Quelle: Picking the Right Toolkit

0

Kurz gesagt: Ja

Beide sind GUI-Tookits, aber WinForms (wie der Name schon sagt) wurde in erster Linie für Windows entwickelt. GTK wurde für Gimp entwickelt und ist ein Ansatz für ein Multi-Betriebssystem-Toolkit.

Wenn Ihre Anwendung nur unter Windows läuft, sollten Sie in den meisten Fällen WinForms verwenden.

Wenn Ihre Anwendung unter verschiedenen Betriebssystemen läuft (wie Linux, BSD, Windows, MacOS, ...), werden Sie GTK bevorzugen.

Für eine bessere Erklärung schauen Sie here.

2

Sie sind verschiedene grafische Toolkits zum Erstellen von Fensteranwendungen mit unterschiedlichen Ursprüngen.

GTK # ist eine Bindung für die GTK-Bibliothek, in erster Linie für Linux/Unix gedacht. Es funktioniert auch unter Windows, aber es ist nicht die native Umgebung, für die es entworfen wurde.

Winforms ist ein weiteres Toolkit, das von Microsoft kommt.

Sie sind völlig verschiedene APIs für die Erzielung der gleichen Ergebnisse, aber jeweils besser für eine Plattform geeignet.

Wenn Sie nach Multiplattform-Fenstern in .net suchen, könnte Qt eine Option sein, da es jetzt LGPLed ist.

7

Sie sind beide GUI Toolkits, die jeweils ihre Stärken und Schwächen haben. Aus meiner Erfahrung:

  • Winforms erfordert keine Installation unter Windows, Gtk # erfordert die Installation unter Windows.
  • Winforms hat einen Designer in Visual Studio, Gtk # hat Standalone-Designer und integriert in MonoDevelop entworfen.
  • Winforms ist an Windows gebunden, Gtk # ist plattformübergreifend.
  • Winforms ist langsam und flackert. Gtk ist schneller.
  • Die meisten Winforms-Steuerelemente sind Wrapper um Standard-Windows-Steuerelemente und bieten sehr eingeschränkte Funktionalität. Gtk-Widgets sind funktionsreicher.
  • Gtk ermöglicht das Erstellen von Formularen und Widgets mit komplexem Layout. WinForms bietet nur triviale Varianten des Layouts und FlowLayout & TableLayout & AutoSize sind zu schwach, um komplexe Formen zu haben, die ihre Größe ändern und automatisch auf unterschiedliche Schriftgrößen und unterschiedliche Auflösungen anpassen.
  • Kairo ist schneller und hat mehr Funktionen als Gdi + (Kairo unterstützt die Ausgabe und Eingabe von mehreren Arten von Dateien, zum Beispiel, SVG, PDF)
  • Gtk # Open-Source ist, WinForms ist nicht
  • WinForms und Gtk # Steuerelemente/Widgets von Drittanbietern haben (mit Gtk # ist es jedoch weniger nötig, da grundlegende Steuerelemente wirklich gut funktionieren).

Kurz gesagt, würde ich nicht empfehlen die Verwendung von WinForms (außer wenn es einen triftigen Grund nicht mehr Abhängigkeiten als .NET FW zu haben), aber unter Verwendung von Gtk # oder WPF.

+3

Lustig, wie Sie plötzlich WPF erwähnen ganz am Ende Ihrer Antwort :) –

+4

Die Frage war etwa Gtk # und SWF, WPF war off-topic :) –

+0

Gibt es alles, was Sie zur Kompilierzeit tun müssen, damit es unter Windows und Linux funktioniert, oder Sie können einfach die Gtk # -Bibliotheken bündeln und es wird plattformübergreifend funktionieren? Außerdem ist das Programmiermodell schwer zu starten oder es ist meistens wie Winforms, aber mit einer anderen Benennung für Dinge (zum Beispiel gibt es ein Paint-Event)? Danke im Voraus. –