GTK#和Windows Forms有什么区别?

Jos*_*osh 10 c# gtk mono monodevelop winforms

GTK#和windows窗体有什么区别?他们完全不同吗?

谢谢

CSh*_*per 23

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的代码不可移植.

资料来源:挑选合适的工具包


dmi*_*_vk 8

它们都是GUI工具包,每个都有自己的优点和缺点.根据我的经验:

  • Winforms不需要在Windows上安装,Gtk#需要在Windows上安装.
  • Winforms拥有Visual Studio设计师,Gtk#拥有独立设计师,并在MonoDevelop中集成设计.
  • Winforms绑定到Windows,Gtk#是跨平台的.
  • Winforms很慢而且闪烁.Gtk更快.
  • 大多数Winforms控件都是围绕标准Windows控件的包装器,并提供非常有限的功能.Gtk小部件功能更丰富.
  • Gtk允许创建具有复杂布局的表单和小部件.Winforms只提供简单的布局变体,而FlowLayout和TableLayout&AutoSize太弱,无法使用复杂的表单来调整大小并自动适应不同的字体大小,不同的分辨率.
  • 开罗比Gdi +更快,功能更多(Cairo支持更多类型文件的输出和输入,例如svg,pdf)
  • Gtk#是开源的,winforms不是
  • Winforms和Gtk#有第三方控件/小部件(但是,对于Gtk#,对它们的需求较少,因为基本控件非常好用).

简而言之,我不建议使用Winforms(除非有充分的理由没有比.NET FW更多的依赖),而是使用Gtk#或WPF.

  • 问题是关于Gtk#和SWF,WPF是偏离主题的:) (4认同)
  • 有趣的是你在答案的最后突然提到WPF :) (3认同)