3
더 쉬운 방법이 있을까요? 이것이 유일한 방법 일 경우 여기에 잠재적 인 메모리 누수가 있습니까? 합니다 (HBITMAP를 분리 한 후)와 PB (SetBitmap은 이미 PB를 통해이 HBITMAP을 필요로)와 PMDC는 삭제해야합니다크기가 조정 된 비트 맵 파일을 MFC 그림 컨트롤로 설정
CImage img1;
int dimx = 100, dimy = 100;
img1.Load(filename);
//filename = path on local system to the bitmap
CDC *screenDC = GetDC();
CDC *pMDC = new CDC;
pMDC->CreateCompatibleDC(screenDC);
CBitmap *pb = new CBitmap;
pb->CreateCompatibleBitmap(screenDC, dimx, dimy);
CBitmap *pob = pMDC->SelectObject(pb);
pMDC->SetStretchBltMode(HALFTONE);
img1.StretchBlt(pMDC->m_hDC,0, 0, dimx, dimy, 0, 0, img1.GetWidth(), img1.GetHeight(), SRCCOPY);
pMDC->SelectObject(pob);
CImage new_image;
new_image.Attach((HBITMAP)(*pb));
//
m_pictureCtrl.SetBitmap(new_image.Detach());
ReleaseDC(screenDC);
다른 사람이이 이미지를 찾고 있지만 크기를 조정할 필요가없는 경우에는 ((CStatic *) GetDlgItem (MyImageControl)) -> SetBitmap ((HBITMAP) myCImage.Detach())' Load를 호출 한 후 – Casebash