3

Visual C++ アプリケーション (MFC) で GUI を介してコンポーネントを視覚的に接続する方法を構築しています。ボックスをクリックして、接続されているボックス間に線を引き、それらに情報を保存するなどの単純なこと。問題は、これらすべてを GDI でゼロから作成しているため、すぐに大量のコードを維持する必要があることです。

ここで本当に車輪の再発明を行っているのでしょうか?

オブジェクト指向の 2D フレームワークを提供するコンポーネントを Web で探しました (ここではベクトル グラフィックが興味深いです)。画面上の四角形がコード内の四角形オブジェクトであるという意味でのオブジェクト指向、または少なくともグラフィカル オブジェクトにカスタム情報を格納できるという意味で。オブジェクト間の線を描画し、マウスがオブジェクト上にあるかどうかを検出するために、コード内のオブジェクトの位置などに関する情報の取得をサポートする必要があります。

それほど複雑なことではありませんが、すべてを自分で書いたという理由だけで数百行または数千行を維持する必要がある場合、非常に複雑になり、維持するのが難しくなります。フレームワーク。

4

5 に答える 5

2

gdi の代わりのような direct2d を見たことがありますか。http://blogs.technet.com/thomasolsen/archive/2008/10/29/introducing-the-microsoft-direct2d-api.aspx http://msdn.microsoft.com/en-us/library/dd370990(VS .85).aspx

于 2009-02-03T10:28:33.227 に答える
2

やり過ぎかもしれませんが、これをチェックしてください。そしてこれも

于 2009-02-03T12:17:30.433 に答える
0

便利そうな SVG ライブラリ (アイデアをくれた Malkocoglu に感謝!) として、 libboard を見つけまし。コード サンプルの単純さは素晴らしく見えます。私の唯一の残りの問題は、ユーザーが生成された SVG 図面を操作することです。:/ 私の知る限り、レンダラーすら含まれておらず、ましてやその描画を操作する方法は含まれていません。これらのニーズを制御するために、自分で SVG パーサーを開発する気があるかどうかはわかりません。しかし、プログラムで図面を作成するためのコードの単純さは、私が求めているもののように見えます。うーん。

于 2009-02-03T13:16:16.183 に答える
0

OO パッケージを使用すると確信していますが、奇跡を期待しないでください。理由は次のとおりです。

いくつかのアプリケーション データ、アプリケーション オブジェクトのセットから始めると仮定します。それらをオブジェクト A と呼びましょう。

OO グラフィカル オブジェクトのパッケージを使用して、オブジェクト A のグラフィカル ビューを表すことができます。この新しいオブジェクト セットを G と呼びます。

ここで、A と G の 2 つのオブジェクトのセットがあり、どちらか一方が動的に変化する可能性があり、それらを正しい対応に保つという問題に直面しています。A から G を生成する必要があるだけでなく、A が変更されたときに G を変更し、G が変更されたときに A を変更する必要があります。これには多くのイベント ドリブン リンケージ コードが必要であり、すべてのケースを正しく処理したかどうかを確認することはできません。目に見えるものが得られない状況に簡単に陥る可能性があります。(WYSINWYG)

2 つの提案があります。

  • あなたがしていること

オブジェクト A を直接レンダリングする「ペイント」ルーチンを用意します (点滅を避けたい場合は「blt」を使用します)。画面の位置やサイズなど、簡単なグラフィック情報をオブジェクト A に添付します。ハイライト、ドラッグ、ワイヤの作成などのために、マウス イベントを自分で処理します。そして、コードを完全に制御できます。

これは、冗長なオブジェクトのセットを管理するための一般的な手法です。ただし、それには厳しい学習曲線があります。ほとんどのプログラマーはそれに慣れていませんが、コードを削減し、正確性を保証します。

于 2009-02-03T13:57:22.323 に答える
0

「オブジェクトを描画して接続する」という記述は、漠然と Fig (xfig / winfig / et al) が扱うもののように聞こえます。

目的に合うかもしれない別の製品 (価格はありますが) は、Visio です。Microsoft Office Visio SDK ( http://office.microsoft.com/en-us/visio/HA101656401033.aspxを参照) は、おそらく非常に豊富です。

ただし、プログラマーの観点から fig も Visio も見ていないので、基になるコードがどのように見えるか、または目的に適しているかどうかはわかりません。しかし、どちらもインスピレーションの良い出発点だと思います。おそらく、目的に合った別のグラフ/図ライブラリが存在する可能性があります。

ところで、これについて(ええと、グーグルで)うなずいているうちに、私は AGD に出くわしました - http://www.ads.tuwien.ac.at/research/graphDrawing.htmlでの自動グラフ描画。繰り返しますが、それがあなたの特定の状況にどれほど適しているかはわかりませんが、それを指摘するのに十分興味深いようでした.

幸運を!

于 2009-02-07T07:40:00.037 に答える