注:この質問は、いくつかの既製のライブラリを使用することに関するものではないため、ノードベースのグラフィカル インターフェイスの実装の重複ではない可能性があります。
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 クラスとは何ですか? 「パネル」要素に単純に描画できますか? そしてドラッグ可能性とは何ですか?