TImageを使ってグラフィックスを描く場合、描画速度が速くなったり描画面積が大きくなると
描画部分がちらついてしまいます。それはTImage自身が画像を記憶して、画面が変更される
度にImage領域内全体を更新するためだと思われます。
代わりにTPaintBoxを使うと、勝手に更新されないのでちらつきは抑えられます。しかし
TPaintBox自身で領域内を記憶してないので、PaintBox領域が他のウインドウなどで覆われると
画像が消えてしまいます。
そこでTBitMapを使って、PaintBoxの画像を手動でBitMapに保存して、PaintBoxの画像が
消されたらBitMapの画像をPaintBoxに貼り付けるようにします。これでちらつきを抑えて
必要な時だけ再描画できるようになります。
方法
TForm1 *Form1;
の下に
Graphics::TBitmap *Mask;
と書き入れます。
Mask = new Graphics::TBitmap();
Mask->Width = PaintBox1->Width;
Mask->Height = PaintBox1->Height;
と書いて、初期化します。
PaintBox1->Canvas->LineTo(x,y);
Mask->Canvas->LineTo(x,y);
PaintBox1->Canvas->CopyRect(Rect(0,0,305,129),Mask->Canvas,Rect(0,0,305,129));
と書きます。これはMaskの(0,0,305,129)の長方形の領域をPaintBox1の(0,0,305,129)
の領域にコピーしています。
masaki@tube.ee.uec.ac.jp