* 핵심은 모든 그리는 것을 비트맵에 그리고 나중에
화면에 결과 비트맵을 보여준다
기존 DC 와 호환되는 Memory DC를 생성하고 거기에 비트맵을 선택하여
Memory DC를 이용하여 그림을 그린 다음
Bitmap을 기존 DC를 이용하여 그려준다
다시 순서를 정리하면
1. 기존 DC와 호환되는 Memory DC 객체 생성 - CreateCompatibleDC( );
2. 기존 DC와 호환되는 비트맵 객체 생성 - CreateCompatibleBitmap( );
3. 메모리 DC가 비트맵 객체를 선택 - SelectObject( )
4. 메모리 DC를 가지고 그림을 그림 - MoveTo, LineTo, Ellipse, Rect 등등
5. 비트맵 객체를 기존 DC를 가지고 그려줌 - BitBlt( )
6. 메모리 객체 해제
void CView::OnPaint(CDC* pDC)
{
// 1. memDC 객체 생성
CDC memDC;
memDC.CreateCompatibleDC(pDC);
// 2. 메모리 비트맵 생성
CRect rect;
GetClientRect(rect);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
// 3. 메모리 DC 가 메모리 비트맵 선택
CBitmap* oldmap = memDC.SelectObject(&bitmap);
// 4. 그려주기
memDC.MoveTo(0, 0);
memDC.LineTo(100, 100);
// 5. 그려주기
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
// 6. 메모리 객체 해제
memDC.SelectObject(oldmap);
memDC.DeleteDC();
bitmap.DelectObject();
}