我是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);
......
保存的图片仅显示客户区,但我想保存所有图片。 谁可以帮助我?提前谢谢。
僖
答案 0 :(得分:2)
而不是BitBlt
尝试StretchBlt
。它会为你处理萎缩。
StretchBlt函数将源矩形的位图复制到 目标矩形,拉伸或压缩位图以适应 必要时,目标矩形的尺寸。系统 根据拉伸模式拉伸或压缩位图 当前在目标设备上下文中设置。
如果你想要更高质量的拉伸/收缩看GDI +。您可以使用各种插值模式。更多信息: