私は現在学生で、Visual C++ アプリケーションを設計して、グラフのマトリックスを含むテキスト ファイルを作成するために、有向グラフを視覚的に挿入できるようにしようとしています。この時点で、onClick イベントを作成してノードを作成し、フォームの Paint イベントを使用してノードを描画しました。また、ノードが重ならないように条件を挿入しました。
現在、ノード間のリンクの作成に取り組んでいます。私が遭遇した問題は、2 つのノードを結ぶ線が別のノードと交差することです。この状況では、オーバーラップを検出し、それを回避するためにラインがどれだけアーチする必要があるかを計算するアルゴリズムを作成するのは面倒だと思います。
したがって、クリックして左右にドラッグすることでユーザーがアーチ状にできる線を作成することを考えましたが、これを行う方法に関するチュートリアルを見つけるのに問題がありました. したがって、誰かがプロジェクトでこの種のアーチ ラインを導入しなければならなかったことがある場合、またはこれに関する情報をどこで見つけることができるかを知っている場合は、深く感謝します.
言及:
- このプログラムにサードパーティのものをインストールすることに興味がないので、これを行うための派手なグラフィック ライブラリをお勧めしないでください。コードを挿入したい関数は form1_onPaint のような名前になっているので、C++ 標準ライブラリに厳密に準拠したいと考えています。
- クリックとドラッグで線を描くことに興味があると言ったことは知っていますが、 onPaint イベントのオーバーラップを検出する機能や、これを解決するために使用できるその他の機能など、これに対する別の実行可能な解決策を誰かが提案できれば、それは大いに役立ちます。