전형적인 이미지 출력
- 리소스로 등록된 비트맵 이미지를 메모리 DC에 로드하여 화면 DC로 출력(BitBlt())하는 것.
비트맵(Bitmap)
- 장치 의존적인 비트맵(DDB, Device Dependent Bitmap)
- 장치 독립적인 비트맵(DIB, Device Independent Bitmap)
현재 우리가 알고 있는 비트맵 파일은 모두 DIB이고, 비트맵을 우리 눈으로 보려면 DDB로 변환해야 한다.
1 Pixel: 24비트(R: 8bit, G: 8bit, B: 8bit)
트루컬러(32비트 비트맵 이미지): 24비트(RBG) + 알파채널(8비트)
void CBmpDisplayDemoView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// 화면 DC
CDC MemDC;
BITMAP bmpInfo; // 비트맵 구조체
MemDC.CreateCompatibleDC(&dc); // 화면 DC와 호환되는 메모리 DC를 생성한다.
// 출력할 화면과 호환되도록 DC를 먼저 생성해야한다.
CBitmap bmp; // 비트맵 클래스
// CBitmap *pOldBmp = NULL;
bmp.LoadBitmapW(IDB_Test_Image); // 비트맵 리소스를 로딩한다.
bmp.GetBitmap(&bmpInfo); // 로딩된 비트맵의 정보(비트맵 구조체에 저장되어있는)를 알아본다.
CBitmap *pOldBmp = MemDC.SelectObject(&bmp); // 메모리 DC에 비트맵을 선택하도록 한다.
dc.BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &MemDC, 0, 0, SRCCOPY); // 메모리 DC에 들어있는 비트맵을 화면 DC로 복사하여 출력한다.
MemDC.SelectObject(pOldBmp);
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
// 그리기 메시지에 대해서는 CView::OnPaint()을(를) 호출하지 마십시오.
}
'language > MFC' 카테고리의 다른 글
| CDC::SelectObject() (0) | 2016.05.07 |
|---|---|
| CDC::Bitblt() (0) | 2016.05.07 |
| MFC 코드의 기본 구조 (0) | 2016.05.07 |
| CWnd Class (0) | 2016.05.07 |
| 키보드 입력 (0) | 2016.04.29 |