MFC 버튼크기에 맞게 이미지 변경하여 보여주기
버튼에 이미지를 씌워야 하는데 그림파일이 버튼 크기보다 크면 이미지의 일부만 보인다.
그경우 이미지를 버튼크기에 맞게 다시 재설정을 해줘야 한다.
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을 상속받아 작성한 샘플입니다.
'Programming Lv1 > MFC' 카테고리의 다른 글
MFC 간단한 쓰레드 작성 (0) | 2012.01.19 |
---|---|
MFC 트리컨트롤 하위메뉴 체크 여부에 따른 색변화 (0) | 2012.01.19 |
CString을 char*로 변경 (0) | 2011.10.17 |
배열 동적 할당 및 배열 개수 (0) | 2011.08.26 |
Float Char 배열 byte형태로 bit연산하여 변환 (1) | 2011.08.26 |