10

GTK#とWindowsフォームの違いは何ですか?それらは完全に異なりますか?

ありがとう

4

4 に答える 4

24

Gtk# :

GTK# は、Gtk+ ツールキットの .NET バインディングです。ツールキットは、速度と互換性のために C で記述されていますが、GTK# バインディングは、マネージドで使用するための使いやすいオブジェクト指向 API を提供します。これは Mono プロジェクトによって活発に開発されており、それを使用するさまざまな実世界のアプリケーション ( BansheeF-SpotBeagleMonoDevelop ) が利用可能です。

一般に、GTK# アプリケーションは、GTK# GUI を作成するためのビジュアル デザイナーを提供するMonoDevelopを使用して作成されます。

プラットフォーム: Unix、Windows、OSX

長所:

  • Gtk+ の遺産によるアクセシビリティの優れたサポート。
  • 国際化された環境を処理するのに理想的なレイアウト エンジンであり、アプリケーションを壊すことなくフォント サイズに適応します。
  • アプリケーションは Gnome デスクトップと統合されます。
  • API は Gtk+ 開発者にとってなじみのあるものです。
  • 大規模な Gtk+ コミュニティ。
  • Windows XP のネイティブな外観で、Win32 ポートが利用可能です。
  • この時点で 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 をバイパスし、Win32 API に直接 P/Invoke することがあります。これらの呼び出しは、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# にはサードパーティ製のコントロール/ウィジェットがあります (ただし、Gtk# では、基本的なコントロールが非常にうまく機能するため、それらの必要性はあまりありません)。

要するに、Winforms の使用はお勧めしませんが (.NET FW より多くの依存関係を持たないという強い理由がある場合を除きます)、Gtk# または WPF を使用します。

于 2009-04-28T17:09:08.230 に答える
2

これらは、ウィンドウ化されたアプリケーションを作成するためのさまざまなグラフィカル ツールキットであり、起源も異なります。

GTK# は、主に linux/unix を対象とした GTK ライブラリのバインディングです。Windows でも動作しますが、設計されたネイティブ環境ではありません。

Winforms は別のツールキットで、Microsoft から提供されています。

これらは同じ結果を達成するためのまったく異なる API ですが、それぞれがプラットフォームにより適しています。

.net でマルチプラットフォーム ウィンドウを探している場合、Qt は LGPL を取得したため、選択肢の 1 つになる可能性があります。

于 2009-04-28T08:57:33.887 に答える
0

要するに:はい

どちらもGUI-Tookitsですが、WinForms(名前が示すように)は主にWindows用に開発されました。GTKはGimp用に開発されており、マルチOSGUIツールキットのアプローチです。

アプリケーションがWindowsでのみ実行される場合、ほとんどの場合、WinFormsを使用する必要があります。

アプリケーションが異なるOS(linux、bsd、windows、macosなど)で実行される場合は、GTKをお勧めします。

より良い説明については、こちらをご覧ください。

于 2009-04-28T08:46:45.240 に答える