10

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

谢谢

4

4 回答 4

24

gtk#

GTK# 是 Gtk+ 工具包的 .NET 绑定。该工具包是用 C 语言编写的,以提高速度和兼容性,而 GTK# 绑定提供了一个易于使用的面向对象的 API 以供托管使用。Mono 项目正在积极开发它,并且有各种使用它的实际应用程序(BansheeF-SpotBeagleMonoDevelop)。

一般来说,GTK# 应用程序是使用MonoDevelop编写的,它提供了一个用于创建 GTK# GUI 的可视化设计器。

平台:Unix、Windows、OSX

优点:

  • 通过其 Gtk+ 遗产对可访问性的良好支持。
  • 非常适合处理国际化环境的布局引擎,并且在不破坏应用程序的情况下适应字体大小。
  • 应用程序与 Gnome 桌面集成。
  • Gtk+ 开发人员熟悉 API。
  • 大型 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 的代码不可移植。

资料来源:选择正确的工具包

于 2009-04-29T11:27:10.353 回答
9

它们都是 GUI 工具包,各有优缺点。根据我的经验:

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

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

于 2009-04-28T17:09:08.230 回答
2

它们是用于创建窗口应用程序的不同图形工具包,具有不同的来源。

GTK# 是 GTK 库的绑定,主要用于 linux/unix。它也适用于 Windows,但它不是为其设计的本机环境。

Winforms 是另一个工具包,这个来自微软。

它们是完全不同的 API,用于实现相同的结果,但每个都更适合一个平台。

如果您正在.net 中寻找多平台窗口,Qt 可能是一个选择,因为它获得了 LGPL。

于 2009-04-28T08:57:33.887 回答
0

简而言之:是的

两者都是 GUI-Tookits,但 WinForms(顾名思义)主要是为 Windows 开发的。GTK 是为 Gimp 开发的,是一种用于多操作系统 gui 工具包的方法。

如果您的应用程序只在 Windows 上运行,在大多数情况下您应该使用 WinForms。

如果您的应用程序将在不同的操作系统(如 linux、bsd、windows、macos 等)下运行,您会更喜欢 GTK。

为了更好的解释看这里

于 2009-04-28T08:46:45.240 回答