结论: 通过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); } }
第二次,我先通过添加资源->引入jpg图片,再重新编译程序,发现图片加载成功了!!这可真是奇怪呀!
后来想到,有可能是图片被修改过了。仔细对比添加资源前后的图片,发现文件虽然尺寸没变,但是大小确实是变化了(一个43.5KB的图片变成了530KB)。
结论:通过VC2010添加JPG图片(添加资源->引入jpg图片)会改变图片大小。