MemDC
MemDC란 비트맵을 출력하기 위해 CDC를 메모리상에 올려놓고 사용하는 것이다. 비트맵을 블록단위로 전송하기 위하여 또하나의 비트맵을 메모리상에 올려놓고 전송을 해주는 것이다. 비트맵을 운용할 때 메모리상에 있는 비트맵을 가지고 사용을 하면 화면의 끈김이 없어진다.
CClientDC WinDC(this);
CBitmap bitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(&WinDC);
MemDC.FillSolidRect(0,0,m_winwidth,m_winheight,RGB(255,255,255));
pDC->Bitblt(0,0,win_Width,win_Height,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject();
<선언방법>
CClientDC WinDC(this);
CBitmap bitmap;
CDC MemDC; // 꼭 MemDC로 할필요는 없지만 프로그래머들이 흔히 MemDC로 사용
MemDC.CreateCompatibleDC(&WinDC);//윈도우DC랑 호환성을 갖게되어 서로 비트맵 블 //럭을 주고받을 수 있다.
bitmap.CreateCompatibleBitmap(DCD* pDC,int width,int height)//비트맵을 생성한다.도화 //지를 생성.
MemDC.FillSolidRect(int x,int y,int cx,int cy,COLORREF col)//비트맵을 단색으로 채운 (LPCRECT lpcRect,COLORREF col) //다.(배경색을 지정)
작업후 출력단계(예문코딩 View Calss 의 OnDraw상)
pDC->Bitblt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop);
pDC->Bitblt(0,0,win_Width,win_Height,&MemDC,0,0,SRCCOPY);
x |
화면에 출력할 x 좌표 |
y |
화면에 출력할 y 좌표 |
nWidth |
화면에 출력할 그림의 폭 |
nHeight |
화면에 출력할 그림의 높이 |
pSrcDC |
비트맵 블록을 저내송할 소스 DC의 포인터 |
xSrc |
소스 비트맵에서 전송을 시작할 x좌표 |
ySrc |
소스 비트맵에서 전송을 시작할 y좌표 |
dwRop |
래스터 오퍼레이션 코드 |
두 번째 소스는 0,0 위치부터 화면에 출력하며 윈도우창의 크기만큼의 그림(여기서는 GetClientRect() 로 윈도우의 크기를 받아왔다고 생각하면된다.)을 MemDC에 있는 비트맵을 0,0부터 끝까지 전송하여 화면에 출력한다는 것이다.
MemDC.SelectObject();//MemDC를 복원시킨다.