void CWriteView::OnDraw(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
if (m_nGridX > 0)
{
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap Bitmap, *pOldBitmap;
Bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
pOldBitmap = memDC.SelectObject(&Bitmap);
memDC.PatBlt(0, 0, rect.Width(), rect.Height(), WHITENESS);
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(192, 192, 192));
CPen *OldPen = (CPen *)memDC.SelectObject(&pen);
// Grid Y 축 Line 그리기
for (int y = 0; y < rect.bottom; y = y + m_nGridY)
{
memDC.MoveTo(rect.left, y); memDC.LineTo(rect.right, y);
}
// Grid X 축 Line 그리기
for (int x = 0; x < rect.right; x = x + m_nGridX)
{
memDC.MoveTo(x, rect.top); memDC.LineTo(x, rect.bottom);
}
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pOldBitmap);
memDC.SelectObject(OldPen);
}
}
위의 예제는 지금 수행 중인 개인 프로젝트 중 사용한 더블 버퍼링이다.
더블 버퍼링을 이용해서 격자 무늬를 배경에 그리도록 하는 것이다.
int 변수 m_nGridX, m_nGridY의 값이 높아지면 격자의 크기도 커진다.
OnDraw 함수에 기술하여 사용하고 있으며 실제 사용가능한 code이다.
//------------------------------------------------------------------------
야휴 블로그에서 옮겨온 data입니다.
2008년 12월 19일 금요일
[Visual C++]더블 버퍼링 실제 예제
라벨:
C/C++
피드 구독하기:
댓글 (Atom)

0 개의 댓글:
댓글 쓰기