2009-04-28 32 views

risposta

22

Gtk#:

GTK # è un NET vincolante per il toolkit Gtk +. Il toolkit è scritto in C per velocità e compatibilità, mentre l'associazione GTK # fornisce un'API orientata agli oggetti facile da usare per l'uso gestito. È in sviluppo attivo dal progetto Mono e sono disponibili varie applicazioni del mondo reale che lo utilizzano (Banshee, , Beagle, MonoDevelop).

In generale, le applicazioni GTK # vengono scritte utilizzando MonoDevelop, che fornisce un visual designer per la creazione di GUI GTK #.

Piattaforme: Unix, Windows, OSX

Pro:

  • buon supporto per l'accessibilità attraverso il suo patrimonio Gtk +.
  • Layout engine ideale per la gestione degli ambienti internazionalizzati e si adatta alla dimensione dei caratteri senza interrompere le applicazioni .
  • Le applicazioni si integrano con il desktop Gnome .
  • API è familiare agli sviluppatori Gtk +.
  • Grande comunità Gtk +.
  • Una porta Win32 è disponibile, con aspetto nativo su Windows XP.
  • L'API è abbastanza stabile in questo punto e lo zucchero sintattico viene aggiunto a per migliorarlo.
  • Il supporto Unicode è eccezionale.

Contro:

  • Gtk + app corrono come stranieri applicazioni su MacOS X.
  • documentazione incompleta.

Windows.Forms:

Windows.Forms è un legame sviluppato da Microsoft per il toolkit Win32. Come popolare toolkit utilizzato da milioni di sviluppatori Windows (specialmente per applicazioni aziendali interne), il progetto Mono ha deciso di produrre un'implementazione compatibile (Winforms) per consentire a questi sviluppatori di trasferire facilmente le proprie applicazioni per l'esecuzione su piattaforme Linux e Mono.

Mentre l'implementazione .Net è vincolante per il toolkit Win32, l'implementazione Mono è scritta in C# per consentirne il funzionamento su più piattaforme. La maggior parte dell'API Windows.Forms funzionerà su Mono, tuttavia alcune applicazioni (e in particolare i controlli di terze parti) saltano occasionalmente l'API e P/Invoke direttamente all'API Win32. Probabilmente queste chiamate dovranno essere cambiate per funzionare su Mono.

In generale, le applicazioni Winforms sono scritte utilizzando Microsoft Visual Studio o SharpDevelop, che forniscono entrambi un visual designer per la creazione di GUI di Winforms.

piattaforme: Windows, Unix, OSX

Pro: esiste

  • Ampia documentazione per esso (libri, tutorial, documenti online).
  • Grande comunità di sviluppatori attivi.
  • Il percorso più semplice per effettuare il porting di un'applicazione esistente di Windows.Forms.

Contro:

  • Internazionalizzazione può essere difficile con layout fissi.
  • Sembra estraneo su piattaforme non Windows.
  • Il codice che chiama l'API Win32 non è portatile.

Fonte: Picking the Right Toolkit

0

In breve: Sì

Entrambi sono GUI-Tookits, ma WinForms (come dice il nome) è stato sviluppato principalmente per le finestre. GTK è stato sviluppato per Gimp ed è un approccio per un toolkit multi os gui.

Se l'applicazione viene eseguita solo su Windows, nella maggior parte dei casi è necessario utilizzare WinForms.

Se l'applicazione verrà eseguita in un sistema operativo diverso (come linux, bsd, windows, macos, ...) preferirai GTK.

Per una spiegazione migliore, consultare here.

2

Sono diversi toolkit grafici per la memorizzazione di applicazioni con finestre, con origini diverse.

GTK # è un binding per la libreria GTK, destinato principalmente a linux/unix. Funziona anche su Windows, ma non è l'ambiente nativo per cui è stato progettato.

Winforms è un altro toolkit, questo proveniente da Microsoft.

Sono API completamente diverse per ottenere gli stessi risultati, ma ognuna è più adatta per una piattaforma.

Se stai cercando una finestra multipiattaforma in .net, Qt potrebbe essere un'opzione ora che ha LGPLed.

7

Sono entrambi toolkit GUI, ognuno con la sua forza e debolezza. Dalla mia esperienza:

  • Winforms non richiede l'installazione su Windows, Gtk # richiede l'installazione su Windows.
  • Winforms ha un designer in Visual Studio, Gtk # ha un designer autonomo e integrato progettato in MonoDevelop.
  • Winforms è associato a Windows, Gtk # è multipiattaforma.
  • Winforms è lento e sfarfallio. Gtk è più veloce.
  • La maggior parte dei controlli Winform è costituita da involucri attorno ai controlli standard di Windows e offre funzionalità molto limitate. I widget Gtk sono più ricchi di funzionalità.
  • Gtk consente di creare moduli e widget con layout complesso. Winforms offre solo varianti banali di layout e FlowLayout & TableLayout & AutoSize sono troppo deboli per essere in grado di avere forme complesse che si ridimensionano e adattano automaticamente a diverse dimensioni di carattere, risoluzioni diverse.
  • Cairo è più veloce e ha più caratteristiche che GDI + (Il Cairo supporta l'uscita e l'input da più tipi di file, ad esempio, SVG, PDF)
  • Gtk # è open-source, WinForms non è
  • WinForms e Gtk # avere controlli/widget di terze parti (tuttavia, con Gtk # c'è meno bisogno di loro perché i controlli di base funzionano davvero bene).

In breve, non consiglierei l'uso di Winforms (tranne quando c'è una forte ragione per non avere più dipendenze rispetto a .NET FW), ma usando Gtk # o WPF.

+3

Divertente come improvvisamente parla WPF alla fine della vostra risposta :) –

+4

La domanda era su Gtk # e SWF, WPF è stato off-topic :) –

+0

C'è tutto ciò che devi fare in fase di compilazione per farlo funzionare su Windows e Linux, oppure puoi semplicemente raggruppare le librerie Gtk # e funzionerà in modo cross-platform per l'out-of-the-box? Inoltre, il modello di programmazione è difficile da avviare o è per lo più come Winforms ma con una denominazione diversa per le cose (ad esempio, c'è un evento paint)? Grazie in anticipo. –

Problemi correlati