2009-04-28 29 views

Respuesta

22

Gtk#:

GTK # .NET es una unión para GTK +. El kit de herramientas está escrito en C para mayor velocidad y compatibilidad, mientras que el enlace GTK # proporciona una API fácil de usar y orientada a objetos para el uso administrado. Está en desarrollo activo por el proyecto Mono, y hay varias aplicaciones del mundo real disponibles que lo usan (Banshee, F-Spot, Beagle, MonoDevelop).

En general, las aplicaciones GTK # se escriben usando MonoDevelop, que proporciona un diseñador visual para crear GUI # de GTK.

plataformas: Unix, Windows, OS X

Pros:

  • un buen apoyo para la accesibilidad través de su patrimonio de GTK +.
  • Motor de diseño ideal para manejar entornos internacionalizados, y se adapta al tamaño de letra sin romper las aplicaciones .
  • Las aplicaciones se integran con el escritorio Gnome .
  • La API es familiar para los desarrolladores de Gtk +.
  • Gran comunidad Gtk +.
  • Un puerto Win32 está disponible, con aspecto nativo en Windows XP.
  • La API es bastante estable en este punto , y se está añadiendo azúcar sintáctico para mejorarlo.
  • La compatibilidad con Unicode es excepcional.

Contras:

  • GTK + aplicaciones corren como solicitudes extranjeras en MacOS X.
  • Documentación incompleta.

Windows.Forms:

Windows.Forms es una unión desarrollado por Microsoft para el kit de herramientas de Win32. Como un popular juego de herramientas utilizado por millones de desarrolladores de Windows (especialmente para aplicaciones empresariales internas), el proyecto Mono decidió producir una implementación compatible (Winforms) para permitir a estos desarrolladores portar fácilmente sus aplicaciones para que se ejecuten en Linux y otras plataformas Mono.

Mientras que la implementación de .Net es un enlace al kit de herramientas de Win32, la implementación de Mono está escrita en C# para permitir que funcione en múltiples plataformas. La mayor parte de la API de Windows.Forms funcionará en Mono, sin embargo, algunas aplicaciones (y especialmente los controles de terceros) ocasionalmente omiten la API y P/Invoke directamente a la API de Win32. Es probable que estas llamadas tengan que cambiar para funcionar en Mono.

En general, las aplicaciones de Winforms se escriben usando Visual Studio de Microsoft o SharpDevelop, que proporcionan un diseñador visual para crear GUI de Winforms.

plataformas: Windows, Unix, OS X

Pros: existe

  • Amplia documentación para ello (libros, tutoriales, documentos en línea).
  • Gran comunidad de desarrolladores activos.
  • La ruta más fácil para portar una aplicación Windows.Forms existente .

Contras:

  • La internacionalización puede ser complicado con diseños fijos.
  • Parece extraño en plataformas que no son de Windows.
  • El código que llama a la API de Win32 no es portátil.

Fuente: Picking the Right Toolkit

0

En resumen: Sí

Ambos son Gui-Tookits, pero WinForms (como dice el nombre) fue desarrollado principalmente para las ventanas. GTK ha sido desarrollado para Gimp y es un enfoque para un conjunto de herramientas multi os gui.

Si su aplicación solo se ejecuta en Windows, en la mayoría de los casos debe usar WinForms.

Si su aplicación se ejecutará bajo diferentes sistemas operativos (como linux, bsd, windows, macos, ...) preferirá GTK.

Para una mejor explicación mira here.

2

Son diferentes juegos de herramientas gráficas para crear aplicaciones de ventana, con diferentes orígenes.

GTK # es un enlace para la biblioteca GTK, destinado principalmente para Linux/Unix. También funciona en Windows, pero no es el entorno nativo para el que fue diseñado.

Winforms es otro conjunto de herramientas, este procedente de Microsoft.

Son API totalmente diferentes para lograr los mismos resultados, pero cada una se adapta mejor a una plataforma.

Si está buscando ventanas multiplataforma en .net, Qt puede ser una opción ahora que tiene LGPLed.

7

Ambos son juegos de herramientas GUI, cada uno con sus puntos fuertes y débiles. Desde mi experiencia:

  • Winforms no requiere instalación en Windows, Gtk # requiere instalación en Windows.
  • Winforms tiene un diseñador en Visual Studio, Gtk # tiene un diseñador independiente y está diseñado en MonoDevelop.
  • Winforms está vinculado a Windows, Gtk # es multiplataforma.
  • Winforms es lento y parpadea. Gtk es más rápido.
  • La mayoría de los controles de Winforms son envoltorios alrededor de los controles de Windows estándar y ofrecen una funcionalidad muy limitada. Los widgets Gtk son más ricos en características.
  • Gtk permite crear formularios y widgets con un diseño complejo. Winforms ofrece solo variantes triviales de diseño, y FlowLayout & TableLayout & AutoSize es demasiado débil para poder tener formas complejas que cambian de tamaño y se acomodan automáticamente a diferentes tamaños de fuente, diferentes resoluciones.
  • Cairo es más rápido y tiene más funciones que GDI + (El Cairo compatible con la salida y la entrada de más tipos de archivos, por ejemplo, SVG, PDF)
  • GTK # es de código abierto, WinForms no es
  • Winforms y GTK # tener controles/widgets de terceros (sin embargo, con Gtk # hay menos necesidad de ellos porque los controles básicos funcionan realmente bien).

En resumen, no recomendaría usar Winforms (excepto cuando hay una razón importante para no tener más dependencias que .NET FW), pero usando Gtk # o WPF.

+3

Es curioso cómo de repente se menciona WPF al final de su respuesta :) –

+4

La pregunta fue sobre GTK # y SWF, WPF fue fuera de tema :) ¿Hay –

+0

todo lo que tiene que hacer en tiempo de compilación para que funcione en Windows y Linux, o simplemente puede agrupar las bibliotecas Gtk # y funcionará en plataformas cruzadas de la caja. Además, ¿es difícil comenzar el modelo de programación o es más como Winforms pero con un nombre diferente para las cosas (por ejemplo, hay un evento de pintura)? Gracias por adelantado. –

Cuestiones relacionadas