VC2010“添加资源->引入JPG图片”会改变图片大小

结论: 通过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图片)会改变图片大小


你可能感兴趣的:(image,测试,2010)