• 締切済み

c++ builder6 PaintBoxについて

c++ builder6でpaintboxをつかって線などを書き込みましたが、クリアすることが出来ません。button1をクリックするたびに消したいのですがどうしたら良いのでしょうか? どなたか教えてください。

みんなの回答

  • jklm324
  • ベストアンサー率46% (137/292)
回答No.1

paintboxを使って線など書き込んだというのは、線でCanvas->MoveTo(x1, y1)で始点を定義し、Canvas->LineTo(x2, y2)で終点(x2, y2)に向かって線を引くなどということでしょうか。 Canvasは、上へ重ねて書くことしかできませんので、UNDOを行うは難しいと思います。もし、すべての描画した要素が重なることがなければ、背景色に戻すことで元に戻ります(線だったら、Pen->Colorを背景色にして、線を引きなおす)が、何かを描いた上に線が引いてあり、その線だけを消す場合には線を引く前の状態をコピーしておいて戻すことが必要になります。斜めの線の場合、かなり無駄な部分までコピーすることになるが矩形領域をコピーするか、面倒ですが線の通る周辺だけをコピーするかいずれかになると思います。サイズが分かりませんが、遅いマシンでは、このコピーの戻しに時間が掛かり画面の乱れが気になる場合もあるかもしれません。領域が大きい場合はかなり戻すのに時間が掛かる場合もあり、線が引かれる前の状態までゼロ(=背景色の設定)からやり直す方がいいかもしれません。 あまりお役に立てる回答ではないと思いますが、PaintBoxによる描画はこのようなものと私は理解しています。

nkonnkon
質問者

お礼

回答ありがとうございました。 結局 PaintBox1->Repaint(); と書くことでクリアできました。

関連するQ&A