-1

注:この質問は、いくつかの既製のライブラリを使用することに関するものではないため、ノードベースのグラフィカル インターフェイスの実装の重複ではない可能性があります。


Autodesk 3DS MAX が Material Editor で使用するような Node-Based-Interface を作成しようとしています:

ここに画像の説明を入力

これまでのところ、いくつかのノードにいくつかの単純なグラフィックス ( .png ) があり、曲線アルゴリズム (Cubic Bezier Curve ) を完成させました。

すべてのロジック、クラス、およびその他のコードは今まで 70% 作成されていますが、C# WinForm でノード ベース インターフェイスを実装する「正しい」方法は何なのか疑問に思っています。

私は OpenGL または XNA ( Direct3D ) を使用することを考えましたが、これは目的には多すぎると思いました。

次のWPFが頭に浮かびましたが、とにかくこのようなことのためにWPFを使用したことがないので、これが作成可能であり、パフォーマンスも優れているかどうかはわかりません。

各ノードをドラッグできますか? 描画されたグラフィックでクリック アンド ドラッグ イベントを登録できますか?

ユーザーがノードを作成し、それらにプロパティと値を与え、ノードを接続し、WinForm のスクロール領域 (コンテナーのように) にドラッグできるようにしたいと考えています。

さて、あなたの提案は何ですか?どこから始めますか?何をすべきか ?そして多分何か例や参考文献はありますか?


編集:

これは、作成しようとしているノードの構造の簡単な (グラフィカルな) 例です。 ここに画像の説明を入力

ご覧のとおり、ノード内にボタン、またはスイッチや調光器などの他のユーザー制御要素が必要です。この画像は、ノードと各「長方形」をどのように構成したいかを示すためだけのものであることに注意してください。

したがって、各長方形には独自のプロパティ ( signal = true / false 、 connectedNode = "node_id" ) が必要であり、独自のマウス イベントもあります。ノードを表すオブジェクトにすべての長方形をグループ化したいと考えています。

私の質問は次のとおりです。「パネル」のようにコントロール要素内に長方形を描くにはどうすればよいですか? (私は、プレーンカラーの長方形を描く代わりに、メインの長方形とコネクタの長方形に.pngを使用したいと思います)


更新: system.drawing クラスとは何ですか? 「パネル」要素に単純に描画できますか? そしてドラッグ可能性とは何ですか?

4

2 に答える 2

1

カスタム Winforms ユーザー コントロールが応答できるマウス アップ イベントとマウス ダウン イベントを見つけることができるはずです。そこから、クリック アンド ドラッグを実装し (マウス クリックのコントロール相対位置は通常、イベント構造で渡されます)、そこから移動できるはずです。

単一のオブジェクトをドラッグしてそこから移動できるようにする小さなプロトタイプを作成することから始めます。

それができたら、クラスのセットアップの設計を開始できます。境界ボックスなどを実装する基本クラスに多くの一般的なドラッグ アンド ドロップ コードを配置してから、描画するオブジェクト/ノード/線とそれらの関連付けのリストを作成することをお勧めします。ゆっくりと上ってください。すべてを一度に構築するつもりはありません。

于 2012-12-16T02:09:35.657 に答える
1

まず、mani tec が必要なことを実行できることを理解する必要があります。

性能については次のとおりです。

良い順から悪い順に並べたリスト

-xna または open gl - (Direct 3d または Direct X)
-windows フォーム (System.Windows.Forms)
-wpf

開発を容易にすることに興味がある場合は、最も単純なものから順に並べてください。

-wpf
-winforms
-xna (...)


あなたをもう少し助けるために、私は言います:

Win Forms では、カスタム ユーザー コントロールを実行できます。ユーザー コントロールでは、保護されたメソッド呼び出し onpaint をオーバーライドできます。このメソッドでは、マウスの動きとクリックと相互作用するリアルタイム デザインを実行できます。

それについてさらに情報が必要な場合は、お尋ねください。

于 2012-12-16T02:00:57.113 に答える