Programming Lv1/MFC

MFC 버튼크기에 맞게 이미지 변경하여 보여주기

평강왕자 2011. 10. 17. 18:56


버튼에 이미지를 씌워야 하는데 그림파일이 버튼 크기보다 크면 이미지의 일부만 보인다.
그경우 이미지를 버튼크기에 맞게 다시 재설정을 해줘야 한다.

CString imagePath = _T("..\\picture\\picture.bmp");

CImage img;

img.Load(imagePath);

//버튼 크기에 맞게 이미지 재설정
 CDC dc;
 CRect rect;
 dc.Attach(lpDrawItemStruct->hDC);

 rect = lpDrawItemStruct->rcItem;

 CDC* pMDC = new CDC;

 pMDC->CreateCompatibleDC(&dc);

 CBitmap* pb = new CBitmap;
 pb->CreateCompatibleBitmap(&dc, rect.Width(),rect.Height());

 CBitmap* pob = pMDC->SelectObject(pb);

 pMDC->SetStretchBltMode(HALFTONE);

 img.StretchBlt(pMDC->m_hDC,-1,-1,rect.Width()+2,rect.Height()+2,0,0,img1.GetWidth(),img1.GetHeight(),SRCCOPY);

 pMDC->SelectObject(pob);
 CImage new_image;
 new_image.Attach((HBITMAP)(*pb));

 new_image.BitBlt(dc,rect.left,rect.top,SRCCOPY);

리소스의 버튼 속성의 Bitmap을 TRUE로 해줘야 한다.

p.s 해당 소스는 OnDrawItem을 상속받아 작성한 샘플입니다.