Paintboxで一度消してから再度描画したい

解決


善じ  2010-01-29 18:52:17  No: 37330

PaintBoxで描画する場合、前回描画したものを一度消して、再度描画したいと考えています。
(一度消さないと、再度描画したときに前のが残ってしまう)

一度書いたものは画面を切り替えたりすると消えますよね。
現在は画面を切り替えても残っているようにOnPaintを使用しています。
そのため一度前回のを消してから再度描画したいです。

ヘルプを見ても良いのがなさそうなので、アドバイスお願いします。


HOta  2010-01-29 19:26:21  No: 37331

TPaintBoxのCanvasに描画しているのですね。
CanvasのBrush.ColorをPaintBoxの色にして全体を塗り直せば消えるでしょう。


Kenny  2010-01-29 19:33:39  No: 37332

TCanvasにはClearとかいうメソッドがないので、背景色と同じ色で描いて見えなくするとか、
領域を全部背景色で塗りつぶして消したことにする、というのがよく使われる手ですね。

procedure TForm1.PaintBox1Paint(Sender: TObject);
var RectSample: TRect;
begin
  //OnPaintで色々描く前にこれを入れておく//
  with RectSample do begin
    Left:=1;
    Top:=1;
    Right:=PaintBox1.Width;
    Bottom:=PaintBox1.Height
  end;
  with PaintBox1.Canvas do begin
    Brush.Color:=clButtonFace; //ここは背景色に合わせる
    FillRect(RectSample)
  end;
end;

何か描く前にこうしておけば、新規に描き始める状態になります。


善じ  2010-01-29 20:02:47  No: 37333

回答ありがとうございます。

やはりクリアの概念がないのですね。
では背景色と同じ色で一度消してから描画したいと思います。

ありがとうございました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加