在小尺寸窗口中保存大尺寸照片

时间:2012-10-15 10:34:09

标签: c++ mfc

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

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);
......

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

1 个答案:

答案 0 :(得分:2)

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

  

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

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

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