panel1 という名前のパネルを含むユーザー コントロールがあります。panel1_paint
パネルにいくつかの線を描画する命令があります。以下の行で、Windows フォームでペイント イベントを実行します。
注: DrawLines は UserControl1.CS で定義されています。
public void DrawLines()
{
...
...
panel1.Invalidate();
}
なぜこれが実行されないのかわかりません。線を描画してからパネルが更新され、パネルがクリアされる可能性があります。だから私はこれに私のコードを変更しました:
public void DrawLines()
{
...
...
panel1_Paint(this, new PaintEventArgs(panel1.CreateGraphics(),
panel1.ClientRectangle));
}
これはうまく機能します。パネルにいくつかの線を描画します。現在、主要部分は次のとおりです。実行時にパネルに子として作成されるオブジェクトがいくつかあります。パネル上でそれらを移動したい (たとえば、火のパーティクルがあるとします)。そのため、それらを で移動 (アニメーション化) すると、Paint Eventtimer
によって描画された線e.Graphics
がクリアされ、パネル上のオブジェクト (パーティクル) のいずれかがそれらの上を移動すると削除されます。では、どうすればこれを回避できますか?! 無効化に問題はありますか? パネルに線と動く粒子の両方を表示するにはどうすればよいですか? パネルはグラフィックスを作成しましたが、オブジェクトを移動するとグラフィックスが削除されるのはなぜですか?