楕円,円の描画方法 – プログラミング – Home

通知
すべてクリア

楕円,円の描画方法


ホーホー
 ホーホー
(@ホーホー)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

●楕円、円の描画方法
マウスドラッグして円や楕円を書く場合、前もってクライアント領域に描画した図形を壊さずに円や,
楕円をマウスドラッグで自由に描画し軌跡を残さず画面のちらつきが出ないように描画したいのですが
どうすればよいでしょうか。
OnDraw()のところでBitBlt()の後にpDC->Ellipse()で円,楕円を描画し
OnLButtonUp()で楕円をメモリデバイスコンテキストに書きBitBlt()で
高速描画しましたが,楕円をマウスドラッグしOnDraw()のところでpDC->Ellipse()で
描画しているため画面にちらつきが出てしまいます。
このちらつきをなくしたいのです。よろしくお願いします。


引用解決済
トピックタグ
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

pDC->EllipseのpDCってメモリDCですか?
メモリDCを使っているのにちらつくのでしょうか?

メモリDCを2つ持って(元の背景、その背景に楕円を描画)、DCに書き込むとかでしょうか。
あとは楕円をINVERTで描画するとか(もう一度INVERTで描画すると元に戻る)。

改善するか分かりませんが、OnEraseBkgndでTRUE(FALSEだったっけ?)を返すのはしてます?


返信引用
ホーホー
 ホーホー
(@ホーホー)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

CdS さん ありがとうございました。
返事がたいへん遅くなって申し訳ありませんでした。

InvalidateRect(NULL,FALSE) またはInvalidateRect(rectOld,FALSE);
(rectOldは四角形の座標)でOnDraw()を呼んで描画しています。
OnDrawに描くのにpDC->Ellipse(CRect(point1,point2));に直接書いて,
OnLButtonUp()でメモリDCに書きOnDraw()のpDC->BitBlt( )で最後に楕円を確定
しています。そのためOnMouseMove()で楕円を大きくしたり,小さくしたりしている
最中画面がちらついてしまいます。チラツキを無くしたいのですがどうすれば良いでしょうか?
現在チラツキを除けば描くことは出来ています。
またOnPaint()、OnDraw両方を使って描画してみたのですがうまく行きませんでした。
何かよいサンプルプログラムがあれば教えていただけないでしょうか。

よろしくお願いいたします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました