0

現在、Graphics クラスを使用して C# でいくつかの線を描画しようとしています。

私の問題は、時々(主にフォームのサイズ変更時の再描画で)行の一部が欠落していることです。

これは次のようになります。

描かれた線

これは私が線を引く私のコードです:

Graphics g = pnlGraph.CreateGraphics();
g.Clear(pnlGraph.BackColor);
Point p1 = new Point((mainNode.Left + (mainNode.Width / 2)), (mainNode.Top + (mainNode.Height / 2)));
Point p2 = new Point((pic.Left + (pic.Width / 2)), (pic.Top + (pic.Height / 2)));
g.DrawLine(new Pen(new SolidBrush(Color.Black), 2), p1, p2);

このコードは、パネルの中央にある mainNode からその周りのいくつかのノードにいくつかの線を描画します。

線を描画する関数を呼び出しています:

読み込み、サイズ変更、表示状態の変更

動かなかったフォームやパネルのペイントでも試してみました。

それを修正する方法、またはこれらの線を描く別の方法はありますか?

答えてくれてありがとう!

4

1 に答える 1

1

@HansPassant の回答でもいくつかの問題が発生したため、別の方法で問題を修正しました。

Image を作成し、パネルのサイズの長方形で塗りつぶしました。その後、画像に線を引き、パネルに画像を描画します。

Graphics g = pnlGraph.CreateGraphics();
Image img = new Bitmap(pnlGraph.Width, pnlGraph.Height);
Graphics gi = Graphics.FromImage(img);
gi.DrawRectangle(new Pen(new SolidBrush(pnlGraph.BackColor)), new Rectangle(0, 0, pnlGraph.Width, pnlGraph.Height));
// For every line:
gi.DrawLine(new Pen(new SolidBrush(Color.Black), 2), p1, p2);
// At the end:
g.DrawImage(img, 0, 0, img.Width, img.Height);
于 2013-09-09T09:46:16.063 に答える