JHB의 프로그래밍 삽질기

[MFC] Double Buffering 더블 버퍼링 사용하기 본문

PROGRAMMING/Win/MFC

[MFC] Double Buffering 더블 버퍼링 사용하기

roter 2012.02.19 21:24

MFC에서 더블버퍼링 사용하기.
이걸 왜 지금까지 안올려놨었지 -.-?;;

일단 제일 중요한건 헤더 파일에
CBitmap  m_Bitmap;
를 선언 하는 것.
이 비트맵에 객체를 생성하고 이것저것 해줄 것임.

우선 아래와 같이 Bitmap에 그림을 그려줌.

void CDlgXXX::MakeMemBitmap(void)
{
	CClientDC dc(this); //실제 dc
	
	CBitmap* pOldBmp; //oldbmp

	CDC MemDC; //메모리DC
	
	m_Bitmap.DeleteObject(); //기존꺼 지워줌
	m_Bitmap.CreateCompatibleBitmap(&dc, 500, 200); //새로 만들어줌
	MemDC.CreateCompatibleDC(&dc); //memDC도 새로 만들어줌
	pOldBmp = MemDC.SelectObject(&m_Bitmap); //memDC의 비트맵 선택
	
	MemDC.MoveTo(0,0); 
	MemDC.LineTo(500,200); //memDC에 그린다.(비트맵 위에 그려진다)
	MemDC.SelectObject(pOldBmp); //oldbmp 선택
	MemDC.DeleteDC(); //memDC를 지운다.
}

 



그리고 아래와 같이 OnPaint에서 BitBlt를 통해 다시 불러줌.

void CDlgXXX::OnPaint()
{
	CPaintDC dc(this); // device context for painting	
	CDC MemDC;
	
	CBitmap* pOldBmp;

	MemDC.CreateCompatibleDC(&dc);
	pOldBmp = MemDC.SelectObject(&m_Bitmap);
	
	
	dc.BitBlt(0,0,500,200, &MemDC, 0,0,SRCCOPY);
	

	MemDC.SelectObject(pOldBmp);
	MemDC.DeleteDC();
}
그럼 이만!!
저작자 표시 비영리 변경 금지
신고
0 Comments
댓글쓰기 폼