void CBmpDisplayDemoView::OnPaint()
{
CPaintDC dc(this); // device context for painting
CDC MemDC;
BITMAP bmpInfo;
// 화면 DC와 호환되는 메모리 DC 생성
MemDC.CreateCompatibleDC(&dc);
// 비트맵 리소스 로딩
CBitmap bmp;
CBitmap *pOldBmp = NULL;
bmp.LoadBitmap(IDB_BITMAP1);
// 로딩된 비트맵 정보
bmp.GetBitmap(&bmpInfo);
// 메모리 DC에 선택
pOldBmp = MemDC.SelectObject(&bmp);
// 메모리 DC에 비트맵을 화면 DC로 복사하여 출력
dc.StretchBlt(20, 20,
bmpInfo.bmWidth * 2, bmpInfo.bmHeight * 2,
&MemDC,
0, 0,
bmpInfo.bmWidth, bmpInfo.bmHeight,
SRCCOPY); // 래스터 연산 값
dc.TransparentBlt(20, 100,
bmpInfo.bmWidth * 2, bmpInfo.bmHeight * 2,
&MemDC,
0, 0,
bmpInfo.bmWidth, bmpInfo.bmHeight,
RGB(0, 0, 0)); // 투명 처리될 색상의 RGB
MemDC.SelectObject(pOldBmp);
}
/*
래스터 연산
SRCCOPY // 메모리 DC의 내용에 변화를 주지 말고 그대로 화면 DC에 복사
SRCAND // 원본과 대상을 AND 연산하여 출력
NOTSRCCOPY // 원본 이미지의 색상을 반전시켜 출력
DSTINVERT // 원본 이미지와는 상관없이 대상 이미지를 반전시켜 출력
BOOL BitBlt(
int x, int y, // 출력할 윈도우의 좌표
int nWidth, int nHeight, // 출력할 비트맵의 폭과 높이
CDC* pSrcDC, // 출력할 비트맵을 저장한 메모리 DC의 주소
int xSrc, int ySrc, // 메모리 DC에 들어 있는 비트맵의 시작 좌표
DWORD dwRop // 적용할 래스터 연산
);
dc.StretchBlt(200, 200, // 출력될 좌표
250 * 2, 300 * 2, // 폭과 높이를 두배 확대
&MemDC,
350, 200, // 원본 이미지 좌표
250, 300, // 원본 이미지의 폭과 높이
SRCCOPY
);
*/
'Programming > MFC' 카테고리의 다른 글
비트맵 및 이미지 처리 - 바탕 화면 이미지 저장 및 실행 (0) | 2010.06.27 |
---|---|
비트맵 및 이미지 처리 - 흑백 변환 (1) | 2010.06.27 |