mfc의 bitblt 각 매개변수의 구체적인 의미를 알려주세요.

bitblt() 사용법

BitBlt() 메서드는 일반적으로 VC에서 비트맵을 표시하는 데 사용되며, 이는 한 장치 장면에서 다른 장치 장면으로 비트맵을 복사합니다. 원본 DC와 대상 DC는 서로 호환되어야 합니다.

이 방법의 기능은 이렇지만 인터넷에서 일부 예제 코드를 이해한 적이 없으며 사용된 DC와 비트맵을 얻는 방법과 이들 간의 관계를 모릅니다.

오늘은 회사에서 창에 비트맵을 몇 개 표시해야 해서 공부하는 것이 중요합니다.

사용하려는 비트맵을 프로젝트 리소스로 가져왔으므로 다음을 사용할 수 있습니다.

CBitmap cbmp;

cbmp.LoadBitmap(IDB_BMP1);

이 방법으로 CBitmap 개체를 얻을 수 있습니다.

그런 다음:

BITMAP 비트맵;

cbmp.GetBitmap(&bitmap);

이러한 방식으로 BITMAP 개체를 얻습니다. 이 객체는 비트맵의 크기 데이터를 얻을 수 있는 객체입니다.

그런 다음 이 비트맵을 표시할 위치를 계산합니다(CRect; 개체에 배치할 수 있음).

그런 다음 이 비트맵을 표시합니다. 이것이 가장 중요한 단계입니다:

CDC dcMemory;

dcMemory.CreateCompatibleDC(pDC);

hOldBitmap = dcMemory.SelectObject(&cbmp);

pDC->BitBlt(ect.left,

ret.top,

bitmap.bmWidth,

p>

bitmap.bmHeight,

&dcMemory,

0,0,

SRCCOPY);

여기서 pDC는 CDC*는 비트맵이 표시되는 장치 컨텍스트입니다.

이런 방식으로 비트맵이 표시되었지만 리소스를 해제해야 합니다.

cbmp.DeleteObject();

dcMemory.SelectObject(hOldBitmap) ;

dcMemory.DeleteDC();

이 중 초기 비트맵에 임시기기 환경을 선택해야 합니다. 그렇지 않으면 제대로 해제되지 않습니다! !

Bitblt는 특정 메모리 블록에서 다른 메모리 블록으로 데이터를 전송합니다. 전자의 메모리 블록을 "소스"라고 하고 후자의 메모리 블록을 "타겟"이라고 합니다. 메모리의 특정 변환을 통해 페이지의 비트맵을 다른 페이지로

프로토타입 설명:

함수 선언 BitBlt Lib "gdi32" Alias ​​"BitBlt"(ByVal hDestDC As Long, ByVal x As Long, ByVal y는 Long, ByVal nWidth는 Long, ByVal nHeight는 Long, ByVal hSrcDC는 Long, ByVal xSrc는 Long, ByVal ySrc는 Long, ByVal dwRop은 Long만큼

hDestDC는 Long으로, //대상 장치 환경의 핸들

x As Long, //대상 장치 환경의 직사각형 영역의 왼쪽 상단 모서리의 x 좌표

y As Long, //대상 장치 환경의 직사각형 영역의 왼쪽 상단 y 좌표

nWidth As Long, //대상 장치 환경의 직사각형 영역의 너비 값

nHeight As Long, //타겟 디바이스 환경의 직사각형 영역의 높이 값

hSrcDC As Long, //소스 디바이스 환경의 핸들

xSrc As Long, //소스 디바이스 환경의 직사각형 영역

ySrc As Long, //왼쪽 상단의 y 좌표 소스 장치 환경의 직사각형 영역

dwRop As Long, //래스터 연산자

dwRop 매개변수는 래스터 연산 코드(Rop)로, 소스 비트맵과 대상 비트맵 및 패턴 브러시의 색상 값이 부울 연산을 수행하는 경우 일반적으로 사용되는 래스터 연산 코드와 그 의미는 다음과 같습니다.

BLACKNESS는 대상 직사각형 영역을 검은색으로 채웁니다.

DSTINVERT 대상 직사각형 이미지를 반전시킵니다.

MERGECOPY 소스 직사각형 이미지를 지정된 패턴(패턴)과 결합합니다. 부울 "AND" 연산을 수행합니다.

MERGEPAINT 반전. 소스 직사각형 이미지를 복사하고 대상 직사각형 이미지와 부울 "OR" 연산을 수행합니다.

NOTSRCCOPY 소스 직사각형 이미지를 반전합니다. 반전 후 대상 직사각형에 복사합니다.

NOTSRCERASE 먼저 소스 직사각형 이미지와 대상 직사각형 이미지에 부울 "OR" 연산을 수행한 다음 결과 이미지를 반전시킵니다.

PATCOPY 지정된 패턴 브러시를 대상 직사각형에 복사합니다.

PATINVERT 지정된 패턴 브러시와 대상 직사각형 이미지에 대해 부울 "XOR" 연산을 수행합니다.

PATPAINT는 먼저 소스 직사각형 이미지를 반전하고 지정된 패턴 브러시로 부울 "OR" 연산을 수행한 다음 대상 직사각형 이미지에 대해 부울 "OR" 연산을 수행합니다. SRCAND 소스 직사각형 이미지와 대상 직사각형 이미지에 대해 부울 "AND" 연산을 수행합니다.

SRCCOPY는 소스 직사각형 이미지를 대상에 직접 복사합니다. 직사각형.

SRCERASE는 대상 직사각형 이미지를 반전시킨 다음 소스 직사각형 이미지에 대해 부울 "AND" 연산을 수행합니다.

SRCINVERT는 소스 직사각형에 대해 부울 "XOR" 연산을 수행합니다. 이미지와 대상 직사각형 이미지입니다.

p>

SRCPAINT 소스 직사각형 이미지와 대상 직사각형 이미지에 대해 부울 OR 연산을 수행합니다.

WHITENESS 대상 직사각형 영역을 흰색으로 채웁니다.