본문 바로가기
::public/윈도우즈 응용 프로그래밍

CreateBitmap / CreateCompatibleBitmap

by 해맑은욱 2019. 9. 23.
// wingdi.h
// 비트맵 생성하기.
HBITMAP WINAPI CreateBitmap(
    _In_ int nWidth,             // 비트맵의 가로
    _In_ int nHeight,            // 비트맵의 세로
   _In_ UINT nPlanes,           // 
   _In_ UINT nBitCount,         // 색상을 표현하는 비트 수. 16, 24, 32.
    _In_opt_ CONST VOID *lpBits  // 초기 비트 패턴 설정. nWidth * nHeight * nBitCount / 8.
);
 
// 화면의 색상 수를 얻음. 프로그램의 호환성을 위함.
int colorDepth = ::GetDeviceCaps(DeviceContext, BITSPIXEL);
// 폭 64, 높이 64, 현재 그래픽 장치의 색상 수를 사용하는 비트맵 생성.
HBITMAP h_bmp = CreateBitmap(64641, colorDepth, NULL);
// 비트맵 제거
BOOL DeleteObject(h_bmp);
 
// 현재 DC(DeviceContext)에 설정된 값을 기준으로 비트맵을 생성.
HBITMAP WINAPI CreateCompatibleBitmap(
   _In_ HDC hdc,   // 전달된 DC
    _In_ int cx,    // 폭
    _In_ int cy     // 높이
);
 
// 폭 64, 높이 64, 현재 그래픽 장치의 속성과 호환되는 비트맵 생성.
HBITMAP h_bmp = CreateCompatibleBitmap(hdc, 6464); // NULL도 가능함.
// 비트맵 제거
BOOL DeleteObject(h_bmp);
 
// 비트맵 구조체
typedef struct tagBITMAP
  {
   LONG        bmType;         // 비트맵 형식을 명시. 항상 '0'을 대입.
    LONG        bmWidth;        // 폭(pixel)
   LONG        bmHeight;       // 높이(pixel)
   LONG        bmWidthBytes;   // 가로 방향으로 한 줄에 사용되는 바이트 수.
   WORD        bmPlanes;       // 색상을 표현하기 위한 플랜의 수. 대부분 '1'을 사용.
    WORD        bmBitsPixel;    // 한 점을 표현하는데 사용되는 색상의 크기를 비트 수. 32비트는 32.
   LPVOID      bmBits;         // 비트맵의 이미지 패턴이 저장되어 있는 메모리의 시작 주소.
  } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
cs

'::public > 윈도우즈 응용 프로그래밍' 카테고리의 다른 글

윈도우 좌표 구성  (0) 2019.09.23
GDI(Graphics Device Interface)  (0) 2019.09.23
Windows API  (0) 2019.09.23
기본 소스 코드 구성(생략본)  (0) 2019.09.23
Window Class  (0) 2019.09.22