0

我是 MFC 的新手。现在我有以下问题: 我有一个大尺寸的图片(例如2000*2000 的大小)显示在一个小尺寸的窗口中(例如640*480 的大小)。难怪如果不缩小图片就无法完全展示自己。我知道如果图片可以放入窗口,我可以保存原始图片而不会丢失任何像素,但是,我现在不能这样做:

CClientDC SHDC(this); //"this" is a CMDIChildWnd derived class
CDC memDC;
CRect rect;

GetClientRect(&rect);
memDC.CreateCompatibleDC(&SHDC);
CBitmap bm;
int uWidth = rect.Width();
int uHeight = rect.Height();
bm.CreateCompatibleBitmap(&SHDC, uWidth, uHeight);
CBitmap *pOld = memDC.SelectObject(&bm);
memDC.BitBlt(0, 0, uWidth, uHeight, &SHDC, 0, 0, SRCCOPY);
......

保存的图片只显示客户区,但我想保存所有的图片。谁能帮助我?提前致谢。

4

1 回答 1

2

而不是BitBlt尝试StretchBlt。它会为你处理收缩。

StretchBlt 函数将位图从源矩形复制到目标矩形,必要时拉伸或压缩位图以适应目标矩形的尺寸。系统根据目标设备上下文中当前设置的拉伸模式来拉伸或压缩位图。

如果您想要更高质量的拉伸/收缩,请查看 GDI+。您可以使用多种插值模式。更多信息在这里:

http://msdn.microsoft.com/en-us/library/k0fsyd4e.aspx

于 2012-10-15T12:23:17.040 回答