2009-04-28 124 views

回答

22

Gtk#

GTK#是一個.NET爲GTK +工具包結合。該工具包是用C語言編寫的,以提高速度和兼容性,而GTK#綁定則提供了易於使用的面向對象的API,以供管理使用。它正在由Mono項目積極開發,並且有各種現實應用程序可供使用(Banshee,F-SpotBeagle,MonoDevelop)。

一般而言,GTK#應用程序使用MonoDevelop編寫,它提供了一個用於創建GTK#GUI的可視化設計器。

平臺:UNIX,Windows和OSX

優點:通過它的GTK +傳承無障礙

  • 良好的支持。
  • 佈局引擎理想用於處理 國際化環境和 適應字體大小而不會破壞 應用程序。
  • 應用程序與Gnome 桌面集成。
  • API是Gtk +開發人員熟悉的。
  • 大型Gtk +社區。
  • Win32端口可用,在Windows XP上有 原生外觀。
  • 該API在此 點處相當穩定,並且添加了語法糖以加強其以改善它。
  • Unicode支持是例外。

缺點:

  • GTK +應用程序運行像MacOS X上
  • 文件不全國外 應用。

Windows.Forms

Windows.Forms的是由微軟開發的結合對Win32工具包。作爲數百萬Windows開發人員(尤其是內部企業應用程序)使用的流行工具包,Mono項目決定生成一個兼容的實現(Winforms),以允許這些開發人員輕鬆地將他們的應用程序移植到Linux和其他Mono平臺上。

儘管.Net實現是對Win32工具箱的綁定,但Mono實現是用C#編寫的,以允許它在多個平臺上工作。大部分Windows.Forms API都可以在Mono上運行,但是有些應用程序(特別是第三方控件)偶爾會直接繞過API和P/Invoke到Win32 API。這些電話可能必須改變才能在Mono上工作。

一般而言,Winforms應用程序是使用Microsoft的Visual Studio或SharpDevelop編寫的,它們都提供了用於創建Winforms GUI的可視化設計器。

平臺:Windows,UNIX,OSX

優點:

  • 大量文檔存在它 (書籍,教程,在線文檔)。
  • 大型活躍開發者社區。
  • 通往現有端口的最簡單路由 Windows.Forms應用程序。

缺點:

  • 國際可以是具有固定佈局棘手 。
  • 在非Windows平臺上看起來很陌生。
  • 調用Win32 API的代碼不是 便攜式。

來源:Picking the Right Toolkit

0

簡而言之:是

兩者都是GUI的Tookits,但WinForms的(正如其名字),主要開發用於窗戶。 GTK是爲GIMP開發的,也是一個多GUI工具包的方法。

如果您的應用程序只在Windows上運行,在大多數情況下,您應該使用WinForms。

如果您的應用程序將運行在不同的操作系統下(比如linux,bsd,windows,macos等),您更喜歡GTK。

如需更好的解釋請看here

2

它們是不同的圖形工具包,用於創建具有不同來源的窗口化應用程序。

GTK#是GTK庫的綁定,主要用於linux/unix。它也適用於Windows,但它不是它所設計的本地環境。

Winforms是另一個工具包,這個來自微軟。

它們是完全不同的API來獲得相同的結果,但每個API都更適合於平臺。

如果你正在尋找在.net中的多平臺窗口,Qt可能是一個現在已經獲得LGPL的選項。

7

它們都是GUI工具包,每個都有自己的優勢和劣勢。根據我的經驗:

  • Winforms不需要在Windows上安裝,Gtk#確實需要在Windows上安裝。
  • Winforms在Visual Studio中有一個設計器,Gtk#擁有獨立的設計器和集成在MonoDevelop中設計。
  • Winforms綁定到Windows,Gtk#是跨平臺的。
  • Winforms很慢並且閃爍。 Gtk更快。
  • 大多數Winforms控件都是標準窗口控件的包裝,並提供非常有限的功能。 Gtk小部件功能更豐富。
  • Gtk允許創建具有複雜佈局的表單和小部件。 Winforms僅提供佈局的簡單變體,而FlowLayout & TableLayout & AutoSize太弱,無法調整大小和自動適應不同字體大小和不同分辨率的複雜表單。
  • 開羅更快並且具有更多的功能比GDI +(開羅支持從多個類型的文件,例如,SVG,PDF格式輸出和輸入)
  • Gtk#的是開源,WinForms的是不
  • 的Winforms和GTK#有第三方控件/小部件(但是,由於基本控件的工作非常好,因此Gtk#對它們的需求較少)。

總之,我不會推薦使用Winforms(除非有強有力的理由不比.NET FW有更多的依賴性),但使用Gtk#或WPF。

+3

奇怪你怎麼會突然在你的答案:) – 2009-10-16 10:48:37