C++ 在小窗口中保存大尺寸图片
我是MFC的新手。现在我有一个问题: 我在小窗口(例如640*480)中显示大尺寸图片(例如2000*2000)。难怪这幅画不缩小就不能完全显示出来。我知道如果图片可以放入窗口,我可以保存原始图片而不丢失任何像素,但是,我现在无法执行此操作:C++ 在小窗口中保存大尺寸图片,c++,mfc,C++,Mfc,我是MFC的新手。现在我有一个问题: 我在小窗口(例如640*480)中显示大尺寸图片(例如2000*2000)。难怪这幅画不缩小就不能完全显示出来。我知道如果图片可以放入窗口,我可以保存原始图片而不丢失任何像素,但是,我现在无法执行此操作: CClientDC SHDC(this); //"this" is a CMDIChildWnd derived class CDC memDC; CRect rect; GetClientRect(&rect); memDC.CreateCom
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);
......
保存的图片只显示客户端区域,但我想保存所有图片。
有人能帮我吗?提前谢谢
Xi代替
BitBlt
尝试StretchBlt
。它会帮你处理缩水的问题
StretchBlt函数将位图从源矩形复制到源矩形中
目标矩形,拉伸或压缩位图以适合
目标矩形的尺寸(如有必要)。系统
根据拉伸模式拉伸或压缩位图
当前在目标设备上下文中设置
如果您想要更高质量的拉伸/收缩,请查看GDI+。您可以使用多种插值模式。更多信息请点击此处:
谢谢,但这对我不起作用。我只想要原始的pict(在本例中,是2000*2000像素的图片)。有人告诉我,在地球上没有办法做到这一点,是吗?你是想缩小图片以适应更小的窗口还是其他什么?我尝试了这种方法,它实际上返回了一张原始大小的图片。但它会导致质量下降——图片变得模糊。这可能是我的一个选择。但是还有其他更好的解决方案吗?@XiDuan,如果你使用GDI+,你应该为大小调整模式指定
HighQualityBicubic
。你是在问如何实现滚动吗?