实现图像的放大、缩小功能用MFC、VC++

如题所述

SetMapMode对位图无效。

StretchBlt使用简单,类似傻瓜相机。但,一般涉及图像显示的软件不会用这个函数,这个函数色彩失真相当厉害。自己做好程序可以看下,一副精美的位图用WINDOWS自带显示程序显示后,再自己运行一下带StretchBlt的位图,两幅位图尽可能缩小后,差距明显出来了。
WINDOWS自带显示程序对位图进过处理的显示效果很好,StretchBlt可能考虑了API的效率,对位图处理较粗糙。尽管在调用StretchBlt前可以先调用SetStretchBltMode(COLORONCOLOR)可以明显改善视觉效果,但还是不尽如人意。
一般使用的图片处理算法有线性插值算法如bilinear大家都知道。好的显示效果付出的代价是图形处理速度变慢。

GDI+具有强大的图形处理能力,上手有点不容易。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-08
方法一:SetMapMode()为MM_ANISOTROPIC自定义坐标体系
为该坐标体系确定一个变量参数如x
放大缩小只需要改变逻辑坐标
方法二:用GDI+ Image类,有现成的成员
第2个回答  2009-10-08
void CMyView::OnDraw(CDC *pDC)
{
CBitmap bitmap;
CDC dcMemory;
bitmap.LoadBitmap(IDB_BITMAP1);
deMemory.CreatCompatibleDC(pDC);
dcMemory.SelectObject(&bitmap);
pDC->BitBlt(0,0,699,919,&dcMemory,0,0,699,919,SRCCOPY);
pDC->StretchBl(699,919/2,699/2,919/2,&dcMemory,0,0,699,919,SRCCOPY)//缩小一半
}本回答被提问者和网友采纳
第3个回答  2009-10-08
有一点麻烦
第4个回答  2009-10-08
用StretchBlt

实现图像的放大、缩小功能用MFC、VC++
SetMapMode对位图无效。StretchBlt使用简单,类似傻瓜相机。但,一般涉及图像显示的软件不会用这个函数,这个函数色彩失真相当厉害。自己做好程序可以看下,一副精美的位图用WINDOWS自带显示程序显示后,再自己运行一下带StretchBlt的位图,两幅位图尽可能缩小后,差距明显出来了。WINDOWS自带显示程序对位图进过处理...

openCV代码在vc++中实现图片缩放功能
用vc6新建一个win32控制台程序;\/ 功能:实现加载jpg图片,并进行缩放显示 开发环境: winXP + vc6 + openCV1.0 头文件路径:D:\\opensource\\opencv1.0\\cv\\include D:\\opensource\\opencv1.0\\cxcore\\include D:\\opensource\\opencv1.0\\otherlibs\\highgui lib文件目录:D:\\opensource\\opencv1.0\\lib 用...

双缓存绘图局部放大 MFC VC++ 如何在运用双缓存绘制动态图时,对图形进...
从内存DC到设备DC的时候,使用StretchBlt就可以了。如果全局还需要保留,就需要画两次,第一次BitBlt,第二次StretchBlt

...VC++数字图像处理的应用,不知如何进行建立工程以及如何使用MFC...
其实没那么难的,和普通的编程差不多,也是建立一个MFC工程即 文件--新建--MFCAppWizard(exe),第一步的时候选择多文档;还有有个地方要注意,因为一般要处理的图像可能比较大,所以在最后一步,你在选择view的种类时最好选择CScorllView。然后至于怎么编写,要实现什么样的功能,就要看你这个程序的设...

VC++中应当注意对VC字符集的设置
我在CodeProject上找了一个很厚道的老外写的一个继承了CDialog窗体类CResizableDialog的源码,这个类的作用是使MFC的窗体放大缩小时,窗体上的控件可以定位(Auchor),不要小看这个小小的每天都要用到的功能,用MFC实现真的很麻烦。很佩服那个老外写了那么多代码(当然跟他们的条件有关,资本主义国家的工人随便找个工作...

《vc++ mfc》如何实现图片切换
如果不需要对图片进行缩放以满足显示区域,则使用BitBlt函数,反之使用StrechBlt函数。如果两张图片大小相同或bbb大于aaa,将图片bbb覆盖在aaa显示的位置就可以了,反之需要先将aaa显示区域用底色填充,然后显示bbb

VC++和MFC到底是什么关系
mfc是一款应用程序框架,它的出现甚至比vc++更早,所有前一位说vc++包括mfc是不正确的。而且不光vc++,vs里也提供mfc。准确的说class wizard才是vc或者vs特有的,class wizard这个插件作为vc等ide的一个功能提供了代码补全的功能,让用户使用mfc进行编程时更便捷。但是,因为mfc是开源的,理论上你可以...

利用MFC和VC++,显示一个位图。
在控件栏里面找 picture 控件放到你要显示图片的地方,然后设置 picture 控件的属性->类型为 Bitmap 然后在 图像里填你要显示的图片的资源ID 如果还不行找本人联系:QQ:35707492

VC++和MFC到底是什么关系
mfc是一款应用程序框架,它的出现甚至比vc++更早,所有前一位说vc++包括mfc是不正确的。而且不光vc++,vs里也提供mfc。准确的说class wizard才是vc或者vs特有的,class wizard这个插件作为vc等ide的一个功能提供了代码补全的功能,让用户使用mfc进行编程时更便捷。但是,因为mfc是开源的,理论上你可以...

...的图片左上方的两个按钮加中间竖线用vc++中的MFC怎么去实现?完成后...
就是图像个组件,把右边拉 左边,拉成一条线,在选择图中属性即可

相似回答