Computer Science
메모리 DC를 이용한 더블 버퍼링
졸리운_곰
2008. 10. 21. 19:24
메모리 DC를 이용한 더블 버퍼링
Posted 2007/03/31 13:19화면에 이미지나 도형, 텍스트 등 여러가지를 출력하다 보면 깜박거리는 현상을 보게 된다. 한 번 출력하고 말 것이라면 크게 문제가 안 될 수 있지만 지속적으로 출력하는 상황에서는 깜박거림은 피하고 싶은 문제 중 하나이고 가장 쉽고 일반적인 해결책은 더블 버퍼링이다.
다음은 메모리 DC를 이용한 더블 버퍼링 방법이다.
1. 출력하려는 크기의 비트맵과 메모리 DC를 생성하고 메모리 DC에 생성된 비트맵을 선택한다.
HBITMAP hbmMem = CreateCompatibleBitmap(hdc, 48, 48);
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbmMem);
2. 생성한 메모리 DC(hdcMem)로 그리려는 내용을 출력한다.
3. 메모리 DC의 내용을 출력할 DC로 복사한다.
BitBlt(hdc, 0, 0, 48, 48, hdcMem, 0, 0, SRCCOPY);
4. 메모리 DC와 비트맵을 정리한다.
SelectObject(hdcMem, hbmOld);
DeleteObject(hbmMem);
DeleteDC(hdcMem);