1

パネルでグラヒックを使用しました。プログラムの開始時にパネルにいくつかのポイントを描画し、その後、それらのポイントを結ぶ線を描画します。問題は、タブボタンを押すと、作成されたグラフィックが消えることです(ただし、これはプログラムで1回発生します)。次の問題は、パネルをクリアするために次のコードを使用したパネルをクリアしたいことです。

Panel1.Invalidate();

ただし、これは線をクリアするだけで、最初に作成されたポイントはクリアしません。パネルを作り直したくないので、誰かが簡単な解決策を持っていますか?

技術的な詳細:パネルに初期点を描画するには、のペイントイベントをpanel1使用します。

Graphics gfx = e.CreateGraphics()

行の場合、ボタンをクリックすると呼び出される別の関数があり、その中で私は次のように使用しました。

Graphics gfx = Panel1.CreateGraphics();

パネルをクリアするために使用される別のボタンには、次のコードがあります。

Panel1.invalidate();

ただし、線のグラフィックをクリアするだけで、最初のポイントはクリアしません。

4

3 に答える 3

4

panel1 の paint イベントで初期ポイントを作成するのを間違えていました。だから電話するたびに

Panel1.Invalidate();

ペイントイベントとそれらのポイントが再描画され、クリアされていないことを思い出します。

于 2012-07-12T07:00:17.950 に答える
0

パネルはペイント イベント内で再描画されます。これは、グラフィック コンテキストに直接アクセスするのではなく、このメソッド内ですべてを描画する必要があることを意味します。

Graphics gfx = Panel1.CreateGraphics();これは、コントロールが再描画されるたびに、使用時に描画したすべてが失われる理由を説明しています。ペイント イベント中は最初の点のみを描画しているだけで、それ以上のものは何も描画していないからです。

于 2012-07-09T18:17:26.410 に答える