2

大きすぎて 1 つのパネルに収まらない図を表示することに問題があります。図の視点を変更する必要があるスクロールバーが必要ですが、画像をスクロールしたい場合、形状が別の位置に移動し、すべてが押しつぶされます。

表示するとこのリンクのように見え、グラフの下部を見ようとすると このリンクのようになります

パネルをスクロールするたびにアプリケーションが図形を描画しているように見えますが、画像の下に移動すると、左上隅のポイントはまだ (0,0) ではなく (0,500) です。

パネル上の位置の値とオブジェクトの nr id を配列に与えるアルゴリズムがあり、それを描画するループがあり、オブジェクトに関する辞書から情報を取得し、配列からその位置を取得します。

この問題はどのように解決できますか? アドバイスがあればthx

編集済み もう一度描画したくありません。このような大きなグラフを 1 つ描画したいのですが (コメント内のリンク)、ユーザーはたとえば 50 個のオブジェクト (形状) を作成でき、そのような大きなグラフは見られないことを知っています小さなパネルなので、スクロールしてグラフの下部、左側、または彼が望むこちら側を見る機会が必要です。

申請の詳細については、追って説明しようと思います。ランチすると、コントロール パネル (form1) が表示されます。ここで、イベント/関数/xor/またはすべてのオプションを追加すると、グラフ上に独自の形状が表示されます。したがって、ユーザーはたとえばイベントをテキストで追加し、追加ボタンを押してオブジェクトを作成し、それをコレクションに追加します。彼は、イベント/関数、xor/または必要なだけ追加できます。

必要なものをすべて追加し、グラフを表示したいので「ダイアグラムを生成」ボタンを押すと、アプリケーションはパネルとスクロールバーを備えた次のウィンドウを表示します。ウィンドウはリンク先でご覧いただけます。この行の後の 2 番目のフォームで

private void panel1_Paint(object sender, PaintEventArgs e){

座標値をテーブルに配置するアルゴリズムがあり、forech ループは辞書 (コレクション) から取得します。

  • 図の図形の中央に表示されるテキスト、
  • パネル上の形状のタイプを決定する値。

配列ループから座標値を取得します。

これがどのように機能するか、必要に応じてここにコードを入れることもできます。

4

2 に答える 2

0

パネルをスクロールするたびにアプリケーションが図形を描画するように見えます

描画領域を消去して、もう一度図形を描画してみませんか?

コードスニペットを投稿できますか?

于 2013-05-12T08:59:14.023 に答える