// <<< 비트맵 출력 >>>
void DrawBitmap(HINSTANCE hInst, HDC hdc)
{
// LoadImage() 함수는 아이콘, 비트맵, 커서등을 읽어들일수 있다.
// LoadBitmap()은 비트맵 리소스만 읽어들인다.
HBITMAP hbm = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
// DC 객체를 새로 생성하는 함수 CreateCompatibleDC()
// 어떤 DC를 생성하느냐?
// => 인자로 주어진 hdc와 픽셀 포맷이 같은 DC를 생성
HDC MemDC = CreateCompatibleDC(hdc);
// SelectObject() 함수는 지정해준 DC가 어떤 객체를 관리할 수
// 있도록 연결해준다.
// -> MemDC 가 객체 hbm 을 관리할수 있도록 연결해준다.
// => 즉 SelectObject() 함수는 어떤 DC가 관리할 수 있는 모든 객체와
// 해당 DC를 연결해주는 역할을 한다.
// 여기서 말하는 객체란 DC가 관리할 수 있는 모든 형태.... ( Pen, Brush, Bitmap ... )
// 그런데 만약 MemDC가 이전에 이미 관리하던 객체가 있다면...?
// 원래 객체를 잃어버리지 않도록 임시로 받아둔다. (holdbm)
// 받아둔 원 객체는 나중에 다시 연결해준다. (복구)
HBITMAP holdbm = (HBITMAP)SelectObject(MemDC, hbm);
//이미지 사이즈 정보 구하기
BITMAP bm;
GetObject(hbm, sizeof(BITMAP), &bm);
// 화면에 뿌려주는 함수
// MemDC 가 화면에 뿌려질 이미지 데이터를 관리하고 있으므로
// 화면 픽셀에 뿌려줄 데이터를 MemDC로부터 전달받는다.
// 여기서 화면이라는 객체를 관리하는 것 -> hdc
BitBlt( hdc, 0,0, bm.bmWidth,bm.bmHeight, MemDC, 0,0, SRCCOPY);
// 다 그렸으면 MemDC 를 원래 상태로 복구한다.
SelectObject(MemDC, holdbm);
// 비트맵 이미지 해제
DeleteObject(hbm);
// 생성할때 바로 해제부터 해준다. (습관)
DeleteDC( MemDC);
}
'[ Programing ] > API' 카테고리의 다른 글
[DDB] AlphaBlend() 알파값 적용 (0) | 2010.02.04 |
---|---|
[DDB] StretchBlt() 비트맵 크기 변경해 출력 (0) | 2010.02.04 |
[DDB] TransparentBlt() 지정 컬러 값 제거 후 출력 (0) | 2010.02.04 |
[ QueryPerformanceCounter() 이용하여 GetTickCount() 보다 더 정확한 측정 ] (0) | 2010.02.01 |
문자 변환 ( 멀티 바이트(ANSI) -> 유니 코드 ) (0) | 2010.02.01 |