본문 바로가기

김탱 개발자/MFC

MFC BMP파일 출력하기

1. OnDraw() 나 OnPaing() 에서 CDC* pDC 를 알고 있을 때, 해당 DC에 외부 BMP파일 출력하는 법


void CImgDlg::OnPaint() 

{

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here


HANDLE bmp;

CBitmap cBitmap;

BITMAP bmpinfo;

CDC memdc;

bmp = LoadImage(NULL, "test3.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

cBitmap.Attach(bmp);

cBitmap.GetBitmap(&bmpinfo);

memdc.CreateCompatibleDC(&dc);

memdc.SelectObject(bmp);

dc.BitBlt(0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,&memdc,0,0,SRCCOPY);

// 만약에 크기를 고정 시키고 싶다면 StretchBit를 사용

// dc.StretchBit(x,y,cx,cy,&memdc,0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,SRCCOPY);

memdc.DeleteDC();

cBitmap.DeleteObject();


//AllocBuff();

// Do not call CDialog::OnPaint() for painting messages


2. Dialog에서 Picture Control을 설정한 상태, 그리고 리소스에서 BMP파일을 Import한 상태


HBITMAP hBmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(SUGARBMP),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);

//SUGARBMP 는 Import된 BMP_ID

img.SetBitmap(hBmp); 


3. Dialog에서 Picture Control을 설정한 상태, 그리고 외부 BMP파일 불러오기


HBITMAP hBmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

//SUGARBMP 는 Import된 BMP_ID

img.SetBitmap(hBmp); 




출처 : http://anglehun.tistory.com/428