본문 바로가기

Language/MFC

MemDC


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를 복원시킨다.