CreatePatternBrush時の残像について – プログラミング – Home

通知
すべてクリア

CreatePatternBrush時の残像について


おいぷー
 おいぷー
(@おいぷー)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

はじめまして。
現在、CreatePatternBrushをつかって、メイン画面上のボタンを押した際、サブダイア
ログが表示されている背景に格子状のハーフトーンをかける処理を作成中なんですが、
実行してみるとどうしても画面の左上からパターンを作画するような残像が出てしまい
ます。
実行環境PCのスペックによるものであれば仕方ないのですが、出来れば見た目上、きれ
いにしたい為、残像が表示されないようにする良い方法があればご教授下さい。
開発環境はOSがWindowsXP、VC++6.0です。
実行環境のOSはWindows2000です。

ハーフトーンの処理は以下の通りです。
void WINAPI DrawHalfTone( HDC hDC ){
HBRUSH hOldBrush, hBrush;
HBITMAP hBmp;
BOOL bGetDC;
DWORD dwRop;

if( hDC == NULL ){
bGetDC = TRUE;
hDC = GetDC( hMainWnd );
}else
bGetDC = FALSE;

dwRop = 0x000A00C9;
hBmp = LoadBitmap( hMainInst, MAKEINTRESOURCE(IDB_HALFTONE1) );
if( hBmp != NULL ){
hBrush = CreatePatternBrush( hBmp );
hOldBrush = SelectObject( hDC, hBrush );

PatBlt( hDC, 0, 0, 800, 600, dwRop );

SelectObject( hDC, hOldBrush );
DeleteObject( hBrush );
DeleteObject( hBmp );
}

if( bGetDC ) ReleaseDC( hMainWnd, hDC );
}


引用解決済
トピックタグ
三草
 三草
(@三草)
ゲスト
結合: 19年前
投稿: 56
 

残像というか、俗に言う「ちらつき」かな

画面に直接描こうとしていませんか?
ダブルバッファリングとか調べてみるといいかも
別画面にお絵かきをして、最後に表示させるという方法です。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

三草さんが言われているようにちらつきの事を行っているのであれば、

オフスクリーン描画とかもキーワードになるかな。
GDIで画面に直接描画してしまうと負荷が高くちらつきの原因になるので
裏画面とかオフスクリーンと言われるメモリ上のみの存在に対して
描画しておいて実画面に貼り付けると言う手段です。
詳しくはWeb上で調べて見てください。
多分、相当数のホームページがヒットすると思います。


返信引用
おいぷー
 おいぷー
(@おいぷー)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

三草さん、PATIOさん、コメントありがとうございます。

そうですね、俗にいうちらつきだと思います。
教えて頂いたキーワードを元に少し自分でも調べてみます。
また分からない点があればご教授お願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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