CAFE

공유 강좌

MFC 더블 버퍼링 이용하기 BitBlt()

작성자미니|작성시간06.04.15|조회수354 목록 댓글 0
음 두가지 방법이잇는데..
첫방법은 간단한 방법으로 Invalidate(FALSE)로 Draw함수를 부릅니다
(TRUE)로 하면 화면에 잇는것을 흰색으로 지우고 다시 그림을 그리기 때문에
깜빡이지 않습니다

하지만 이것으로 해결이 않될때에는 더블버퍼링을 써야하죠
이건 메모리에 우선 그릴것을 다그린후에 모니터에 뿌려줍니다
그럼 그리는 과정에서 깜빡이는것을 없앨수 있죠..

방법에는

OnDraw함수에 보면 pDC가 잇습니다.
pDC->BitBlt(....)하면 비트맵을 찍을수있죠.. 여기서는 비트맵으로 설명하겠습니다..

CDC MemDC;
CBitmap MemBit;
CDC WhiteDC;
CBitmap WhiteBit;
//우선 이러케 선언 을 해줍니다 MemDC는 메모리에 그리기위한 DC입니다
//MemBit는 비트맵을 저장해줄 변수입니다.여기서는 도화지를 준비하는거랑 같죠.
//WhiteDC와 ,WhiteBit는 그려줄 비트맵과DC입니다. 만화나 그림이죠 ^^

그다음에..
CClientDC dc(this);

WhiteDC.CreateCompatibleDC(&dc);
WhiteBit.LoadBitmap(IDB_WHITE);
WhiteDC.SelectObject(&WhiteBit);

MemDC.CreateCompatibleDC(&dc);
MemBit.CreateCompatibleBitmap(&dc, 30 * 19 + 1, 30 * 19 + 1);
MemDC.SelectObject(&MemBit);
//여기서는 꼬옥 한번만 불려주게 합니다.. 쉬운 방법으로는 OnCreate함수에 넣는거죠
//첫번째 줄은 WhiteDC를 호환성있게 해줍니다. CClientDC와 호환성있게해주는거죠
//두번째 줄은 비트맵 로드하는겁니다 매개변수는 리소스 아이뒤입니다
//셋째줄은 DC에서 비트맵을 선택하는겁니다.
//넷째줄은 또 호환서있게 합니다(MemDC,WhiteDC는 CDC입니다)
//다섯째줄은 비트맵을 만드는데.. 도화지를 까는겁니다. 첫매개변수는 &dc해주면 되
//고요 두번째와 세번째는 크기입니다. x값과.y값이죠
//그리고 다시 DC에서 비트맵을 선택해줍니다

그런다음.. 이제부터 그릴 일이 있으면
MemDC->BitBlt(...)하면 됩니다.그러면 메모리에만 그려지게 되죠..
그리고 메모리에 다그렸다면 OnDraw함수에서 마지막에
pDC->BitBlt(...) 로 하면 화면에 그려집니다
BitBlt 함수는 MSDN 참조하시고요
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼