4

C++ と MFC のバックグラウンドから来て、アプリケーション GUI を開発するためのより良い (保守性/カスタマイズ) プラットフォームはありますか?

産業用アプリケーション (マシン ビジョン) を開発しています。ここで: -
パフォーマンスが重要 (主に CPU atm での画像処理ですが、次に GPU が必要です)
-低レベルのハードウェア インターフェイス (社内の PCI デバイス、フレーム グラバー、モーション カード)
-リアルタイムデータ可視化(画像・統計グラフ) ・
将来のロードマップには、分散処理やリモートアクセスのためのネットワーク機能が含まれます。

システムは制御された環境で実行されるため、クロスプラットフォームは重要ではありません (顧客は、システムが実行され、出力が得られるかどうかだけを気にします)。

移行コストに関する懸念もあります (サードパーティの依存関係、開発者とサービス担当者のトレーニング コスト)。


上記の「画像処理」に関する編集
の説明: グラフィック(通常は3Dベクトル化)ではなく、「画像」(マトリックス形式の2D情報)を参照しています。現在、サードパーティのイメージング ライブラリ (セグメンテーション、OCR/OCV、形態、パターン マッチなどの空間ドメイン処理用) を使用し、結果ロジックを組み込んでいます。

4

3 に答える 3

3

パフォーマンスが重要なグラフィックス処理が必要な場合は、C++/DirectX または C++/OpenGL が最適です。C++/DirectX は、間違いなく、この 2 つの中でより保守しやすいものです。

そうは言っても...実行している実際の処理によっては、UI の一部をより保守しやすいプラットフォームに移動することを検討することもできます。.NET フレームワーク / WPF は、MVVM のようなパターンの適切な実装により、いくつかの非常に驚くべきことを行うことができ、驚くほど保守しやすくなります。ネットワーキング側も同様です。WCF は、コードから多くの一般的なプロトコルを抽象化し、よりクリーンで保守しやすいネットワーク コードを作成します。C++/CLI で、アンマネージド プロセッシングとマネージド レイヤーの間に変換レイヤーを記述することもできます。

とはいえ、それはすべて非常に主観的なものです。あなたの箇条書きからは、処理の一部またはすべてを .NET/C# にオフロードできるかどうかを判断するのに十分なことはわかりません。検討する価値はありますが、私の直感では、おそらく最善の策ではないでしょう.

于 2010-09-17T02:29:29.350 に答える
3

Qtのファンとして、私はそれについて言及しないことを怠ります。

  • クロスプラットフォームはあなたの基準の1つではありませんが、それは素晴らしいボーナスです.
  • また、Qt は OpenGL を介して優れたビデオ ハードウェアをサポートしています (ただし、ハードウェアのキャプチャに役立つかどうかはわかりません)。
  • オープンソースなので、好きなだけ手を汚すことができます。
  • 高度にカスタマイズ可能です。
  • 活発に開発されており、大きなコミュニティがあります。
  • MFC プログラマーは、速度を上げるのにそれほど苦労する必要はありません。

また、次の質問と回答のいくつかを読む必要があります。

Windows 用の優れた C++ GUI ライブラリ https://stackoverflow.com/questions/610/gui-programming-apis

于 2010-09-17T02:35:12.057 に答える
2

以前 C++ の科学アプリケーションを開発するときに行ったことは、コンソール ベースのアプリケーションで完全に開発するということです。コンソール ベースのアプリケーションは、ユーザーのキーボードからさまざまな種類のコマンドを受け取り、それに応じてアクションを実行できます。例えば ​​:

image_processor > load input.png
image_processor > save out.png

これの良いところは、GUI フレームワークにどのように適合するかについてあまり心配することなく、アルゴリズムの設計に 100% 集中できることです。それらはMFCまたはQTのいずれかです。

一日の終わりには、キーボード入力ストリームから入力を取得する代わりに、コンソール ベースのアプリケーションの STDIN を GUI アプリケーション通信チャネルにフックするだけです。次に、私の GUI アプリケーションは文字列ベースのコマンドを使用して、コンソール アプリケーションから会話してフィードバックを受け取ります。

GUI の開発に何を使用していると思いますか? Java Swing:)

私はUnixの人々のアプローチを取っていると思います。ジョエルの言うことを見てください:

Unix プログラマーと Windows プログラマーを取り上げ、それぞれに同じエンド ユーザー アプリケーションを作成するタスクを与えたとします。Unix プログラマーは、コマンドラインまたはテキスト駆動型のコアを作成し、場合によっては、後付けとして、そのコアを駆動する GUI を構築します。このようにして、コマンドラインでプログラムを呼び出し、結果をテキストとして読み取ることができる他のプログラマーが、アプリケーションの主な操作を利用できるようになります。Windows プログラマーは GUI から始める傾向があり、場合によっては後付けとして、GUI インターフェイスの操作を自動化できるスクリプト言語を追加します。

Windows のアプローチを採用することで、より多くのuser friendlyアプリケーションが得られることを認識しています。ただし、洗練されたアルゴリズムを適切に作成することが主な関心事であり、GUI が二次的なものである場合は、Unix アプローチを使用することをお勧めします。

于 2010-09-18T06:25:46.413 に答える