C, C++, MFC
[MFC] VC++ 이미지 Raw 데이터를 Bitmap 으로 사용하기
수동애비
2018. 10. 31. 16:25
반응형
**** Raw image Data를 DC에 사용할 수 있게 가공
// 비트맵 정보 객체 생성 및 초기값 설정 (가로 / 세로 / colordepth)
PBITMAPINFO pBmp = new BITMAPINFO;
pBmp->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pBmp->bmiHeader.biWidth = width;
pBmp->bmiHeader.biHeight = height;
pBmp->bmiHeader.biPlanes = 1;
pBmp->bmiHeader.biBitCount =m_bInfo.bmiHeader.biBitCount;
pBmp->bmiHeader.biCompression = BI_RGB;
pBmp->bmiHeader.biSizeImage = 0;
pBmp->bmiHeader.biXPelsPerMeter = 0;
pBmp->bmiHeader.biYPelsPerMeter = 0;
pBmp->bmiHeader.biClrUsed = 0;
pBmp->bmiHeader.biClrImportant = 0;
// bitmap 핸들 선언
HBITMAP hBmp
// CreateDIBitmap 으로 비트맵 생성
hbmp = CreateDIBitmap(pdcDest->GetSafeHdc(), // 사용될 대상 DC와 호환되는 DC의 핸들
&pBmp->bmiHeader, // 비트맵 정보 설정된 객체 헤더
CBM_INIT, // 초기화.. 그냥 이걸로 통용됨
pBits, // 이미지 Raw 데이터 포인터
pBmp, // 비트맵정보객체
DIB_RGB_COLORS // RGB 컬러인지 PAL 컬러인지...
);
// SelectObject로 해당 DC에 이미지 데이터 그리기
HBITMAP m_hbmOld; //그려질 대상 DC의 복구를 위해서 SelectObject가 리턴한 현재 bitmap핸들 저장
m_hbmOld = (HBITMAP)::SelectObject(pMemDC->GetSafeHdc(), // 그려질 대상 DC 핸들
hbmp // 위에서 생성한 비트맵
);
// 이제 pMemDC로 이미지 함수 사용...