结论: 通过VC2010添加JPG图片(添加资源->引入jpg图片)会改变图片大小。
本身只是为了想给对话框添加一个背景图片,试了下bmp的,都没有问题。
为了测试下是否可以加载(用LoadImage)jpg图片(作为背景色),我用如下代码试了下:
BOOL CdelDlg::OnEraseBkgnd(CDC* pDC)
{HBITMAP hBitmap;//CString imgPath = L"res\\11.jpg";CString imgPath = L"E:\\cc.jpg";// CString imgPath = "E:\\Program\\VC\\d\\res\\11.jpg";hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), imgPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTCOLOR|LR_SHARED);DWORD err = GetLastError();TRACE("%d\n", err);if(hBitmap){CRect rect;CBitmap img, *pOldBmp;BITMAP bmp;CDC dcMem;CPaintDC dc(this);img.m_hObject = hBitmap;img.GetBitmap(&bmp);GetClientRect(&rect);dcMem.CreateCompatibleDC(&dc);pOldBmp = dcMem.SelectObject(&img);dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);//dc.BitBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, SRCCOPY);dc.SelectObject(pOldBmp);return TRUE;}else{MessageBox(L"No");return CDialogEx::OnEraseBkgnd(pDC);}
}
第一次LoadImage失败了。
第二次,我先通过添加资源->引入jpg图片,再重新编译程序,发现图片加载成功了!!这可真是奇怪呀!
后来想到,有可能是图片被修改过了。仔细对比添加资源前后的图片,发现文件虽然尺寸没变,但是大小确实是变化了(一个43.5KB的图片变成了530KB)。
结论:通过VC2010添加JPG图片(添加资源->引入jpg图片)会改变图片大小。