MFC 图片缩放:使用 CImage 类实现图片大小调整
在 MFC 中,可以使用 CImage 类来缩放图片。以下是一个示例代码:
CImage srcImage;
srcImage.Load(_T("path_to_source_image")); // 加载源图片
int srcWidth = srcImage.GetWidth();
int srcHeight = srcImage.GetHeight();
int destWidth = 100; // 目标图片宽度
int destHeight = 100; // 目标图片高度
CImage destImage;
destImage.Create(destWidth, destHeight, srcImage.GetBPP()); // 创建目标图片
CDC srcDC, destDC;
srcDC.CreateCompatibleDC(NULL);
destDC.CreateCompatibleDC(NULL);
CBitmap srcBitmap, destBitmap;
srcBitmap.CreateCompatibleBitmap(&srcDC, srcWidth, srcHeight);
destBitmap.CreateCompatibleBitmap(&destDC, destWidth, destHeight);
CBitmap* pSrcOldBitmap = srcDC.SelectObject(&srcBitmap);
CBitmap* pDestOldBitmap = destDC.SelectObject(&destBitmap);
srcImage.BitBlt(srcDC.m_hDC, 0, 0, srcWidth, srcHeight, 0, 0, SRCCOPY); // 将源图片绘制到源设备上下文中
destImage.StretchBlt(destDC.m_hDC, 0, 0, destWidth, destHeight, srcDC.m_hDC, 0, 0, srcWidth, srcHeight, SRCCOPY); // 缩放图片
srcDC.SelectObject(pSrcOldBitmap);
destDC.SelectObject(pDestOldBitmap);
srcBitmap.DeleteObject();
destBitmap.DeleteObject();
srcDC.DeleteDC();
destDC.DeleteDC();
destImage.Save(_T("path_to_destination_image")); // 保存缩放后的图片
这段代码首先加载源图片,然后指定目标图片的宽度和高度。接下来,创建源设备上下文和目标设备上下文,并创建与其兼容的位图。然后,将源图片绘制到源设备上下文中,并使用 StretchBlt 函数将源设备上下文中的图像缩放到目标设备上下文中。最后,保存缩放后的图片。请根据实际情况修改代码中的路径和参数。
原文地址: https://www.cveoy.top/t/topic/pgJ4 著作权归作者所有。请勿转载和采集!