2015년 4월 28일 화요일

더블버퍼링을 사용하지 않고 화면 깜빡임 방지하기

mfc를 이용하여 Invalidate();를 호출할 때가 있을건데
화면을 갱신하게 하다보니 흰 색깔과 함께 깜빡깜빡거린다.
원인은 화면을 새로 호출하는데 한번 배경을 싸그리 다 지우고 새로그리는 이유떄문인데
즉 싹 다 지우니 한번 흰 화면이 나오는거고 그다음 다시 OnDraw를 호출하면서
새로 그리는 현상때문인듯 하다.
이 경우 Invalidate(false); 이렇게 써주면 깜빡임이 사라진다.


아래 방식도 비슷하게 깜빡임을 없엘 수 있긴 한데 왠만하면 사용하지 않는게 좋다.
BOOL CGameProjectView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.

//return CView::OnEraseBkgnd(pDC);
return FALSE;
}
InvalidateRect()을 사용하여 일부 이미지를 지워야 할 경우도 있을텐데 위 방식처럼
할 경우 일부 이미지가 지워지지않고 그대로인것 처럼 보인다.
일단 지워지는것은 맞는데 새로 그려버림..

댓글 없음:

댓글 쓰기