●楕円、円の描画方法
マウスドラッグして円や楕円を書く場合、前もってクライアント領域に描画した図形を壊さずに円や,
楕円をマウスドラッグで自由に描画し軌跡を残さず画面のちらつきが出ないように描画したいのですが
どうすればよいでしょうか。
OnDraw()のところでBitBlt()の後にpDC->Ellipse()で円,楕円を描画し
OnLButtonUp()で楕円をメモリデバイスコンテキストに書きBitBlt()で
高速描画しましたが,楕円をマウスドラッグしOnDraw()のところでpDC->Ellipse()で
描画しているため画面にちらつきが出てしまいます。
このちらつきをなくしたいのです。よろしくお願いします。
pDC->EllipseのpDCってメモリDCですか?
メモリDCを使っているのにちらつくのでしょうか?
メモリDCを2つ持って(元の背景、その背景に楕円を描画)、DCに書き込むとかでしょうか。
あとは楕円をINVERTで描画するとか(もう一度INVERTで描画すると元に戻る)。
改善するか分かりませんが、OnEraseBkgndでTRUE(FALSEだったっけ?)を返すのはしてます?
CdS さん ありがとうございました。
返事がたいへん遅くなって申し訳ありませんでした。
InvalidateRect(NULL,FALSE) またはInvalidateRect(rectOld,FALSE);
(rectOldは四角形の座標)でOnDraw()を呼んで描画しています。
OnDrawに描くのにpDC->Ellipse(CRect(point1,point2));に直接書いて,
OnLButtonUp()でメモリDCに書きOnDraw()のpDC->BitBlt( )で最後に楕円を確定
しています。そのためOnMouseMove()で楕円を大きくしたり,小さくしたりしている
最中画面がちらついてしまいます。チラツキを無くしたいのですがどうすれば良いでしょうか?
現在チラツキを除けば描くことは出来ています。
またOnPaint()、OnDraw両方を使って描画してみたのですがうまく行きませんでした。
何かよいサンプルプログラムがあれば教えていただけないでしょうか。
よろしくお願いいたします。