在 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 函数将源设备上下文中的图像缩放到目标设备上下文中。最后,保存缩放后的图片。请根据实际情况修改代码中的路径和参数。

MFC 图片缩放:使用 CImage 类实现图片大小调整

原文地址: https://www.cveoy.top/t/topic/pgJ4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录