GTK#和Windows Forms有什么区别?
GTK#和windows窗体有什么区别? 他们完全不同吗?
谢谢
Gtk# :
GTK#是Gtk +工具包的.NET绑定。 该工具包是用C语言编写的,用于提高速度和兼容性,而GTK#binding提供了一个易于使用,面向对象的API供管理使用。 它正在由Mono项目积极开发,并且有各种可用的实际应用程序( Banshee , F-Spot , Beagle , 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是Microsoft为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的代码不可移植。
资料来源: 挑选合适的工具包
它们都是GUI工具包,每个工具包都有自己的优点和缺点。 根据我的经验:
- Winforms不需要在Windows上安装,Gtk#需要在Windows上安装。
- Winforms在Visual Studio中拥有设计师,Gtk#拥有独立设计师并在MonoDevelop中集成设计。
- Winforms绑定到Windows,Gtk#是跨平台的。
- Winforms很慢而且闪烁。 Gtk更快。
- 大多数Winforms控件都是围绕标准Windows控件的包装器,并提供非常有限的function。 Gtk小部件function更丰富。
- Gtk允许创建具有复杂布局的表单和小部件。 Winforms只提供简单的布局变体,FlowLayout和TableLayout和AutoSize太弱,无法使用复杂的表单来resize并自动适应不同的字体大小,不同的分辨率。
- 开罗比Gdi +更快,function更多(Cairo支持更多类型文件的输出和输入,例如svg,pdf)
- Gtk#是开源的,winforms不是
- Winforms和Gtk#有第三方控件/小部件(但是,使用Gtk#对它们的需求较少,因为基本控件工作得非常好)。
简而言之,我不建议使用Winforms(除非有充分的理由没有比.NET FW更多的依赖),而是使用Gtk#或WPF。
它们是用于创建具有不同来源的窗口化应用程序的不同图形工具包。
GTK#是GTK库的绑定,主要用于linux / unix。 它也适用于Windows,但它不是它所设计的原生环境。
Winforms是另一个工具包,这个工具包来自微软。
它们是完全不同的API,用于实现相同的结果,但每个API更适合于平台。
如果你正在寻找.net中的多平台窗口,Qt可能是一个选择,因为它得到LGPLed。
简而言之:是的
两者都是GUI-Tookits,但WinForms(如名称所示)主要是为windows开发的。 GTK是为Gimp开发的,是一种用于多操作系统工具包的方法。
如果您的应用程序仅在Windows上运行,则在大多数情况下您应该使用WinForms。
如果你的应用程序将在不同的操作系统下运行(如linux,bsd,windows,macos等),你会更喜欢GTK。
有关更好的解释,请看这里 。