Cimage에서 듀얼 버퍼 드로잉 구현

5702 단어 MFC
이중 버퍼링은 메모리에 화면 그리기 영역과 일치하는 대상을 만들고, 먼저 그림을 메모리에 있는 이 대상에 그린 다음, 이 대상의 그림을 한 번에 화면에 복사합니다. 이렇게 하면 그리는 속도를 크게 높일 수 있습니다.이중 버퍼 드로잉의 단계: 1. 메모리에 캔버스와 일치하는 버퍼 생성 2, 버퍼 드로잉 그리기 3, 버퍼 비트맵을 현재 캔버스에 복사 4, 메모리 버퍼 이중 버퍼 드로잉의 코드 실행 해제(MFC 아래):
void CMFCApplication1View::OnDraw(CDC* pDC)
{
	CMFCApplication1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

// 
	CRect rectClient;
	GetClientRect(rectClient);

     // 
	CDC MDC;
	MDC.CreateCompatibleDC(pDC);        // DC
	CBitmap bmp;
	bmp.CreateCompatibleBitmap(pDC, rectClient.Width(), rectClient.Height());        // 
	MDC.SelectObject(bmp);

    // 
	m_bmpBack.Draw(MDC, rectClient);    
	
	// 
	pDC->BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &MDC, 0, 0, SRCCOPY); 
	
	ReleaseDC(pDC);
}

BitBlt에 대한 소개입니다.
BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);
x: 대상 사각형 영역의 왼쪽 위 x 축 좌표점입니다.
y: 대상 사각형 영역의 왼쪽 위 Y축 좌표점입니다.
nWidth: 대상 장치에 비트맵의 폭을 그립니다.
nHit: 대상 장치에 비트맵 높이를 그립니다.
pSrcDC: 소스 장치 컨텍스트 객체 포인터.
xSrc: 원본 장치 상하문에 있는 기점 x축 좌표입니다. 함수는 이 기점에서 대상 장치로 복사됩니다.
ySrc: 소스 장치 컨텍스트의 시작점 y축 좌표로, 함수는 해당 시작점에서 대상 장치로 비트맵을 복사합니다.
dwRop: 래스터 작업 코드dwRop에는 다음과 같은 옵션이 있습니다.
BLACKNESS는 대상 영역을 검정색으로 채웁니다.
DSTINVERT 대상 매트릭스 영역 색상 반전
MERGECOPY는 원래의 장치 사각형 영역의 색상과 대상 장치의 브러시를 연산과 조합합니다
MERGEPAINT는 대칭 이동된 소스 사각형 영역의 색상과 대상 사각형 영역의 색상을 결합하기 위해 또는 연산을 사용합니다.
NOTSRCCOPY 복제 소스 장치 영역이 대상 장치에 반사됨
NOTSRCERASE는 소스 장치 영역과 대상 장치 영역의 색상을 조합하여 사용하거나 연산한 다음 결과 색상을 반대로 가져옵니다.
PATCOPY 소스 디바이스에서 현재 선택한 브러시를 대상 디바이스로 복제
PATINVERT는 대상 장치에서 선택한 브러시와 대상 장치 영역의 색상을 다르게 또는 연산하여 조합합니다.
PATPAINT는 대상 영역에서 현재 선택한 브러시와 원본 장치 영역의 반전된 색을 조합하거나 연산합니다
SRCAND는 소스 및 대상 장치 영역의 색상을 연산과 결합합니다.
SRCCOPY는 소스 디바이스 영역을 대상 디바이스로 직접 복제
SRCERASE는 연산과 결합된 대상 장치 영역의 역색 및 소스 장치 영역의 색을 사용합니다.
SRCINVERT는 소스 장치 영역 색상 및 대상 장치 영역 색상을 조합하여 이기종 또는 연산을 사용합니다.
SRCPAINT에서 소스 장치 영역 색상 및 대상 장치 영역 색상 조합을 사용하거나 연산합니다.

좋은 웹페이지 즐겨찾기