MFC显示图像问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC显示图像问题相关的知识,希望对你有一定的参考价值。

我在界面中显示图像,现在我需要只显示图像的中间部分,或者自定义显示范围。请问大神该怎么去处理呢?

这个看你是用什么方式显示的图片了。
比如是BitBlt,那么在参数中指定source的范围就可以了。
参数说明如下:
nWidth:指定源在目标矩形区域的逻辑宽度。
nHeight:指定源在目标矩形区域的逻辑高度。
xSrc:指定源矩形区域左上角的X轴逻辑坐标。
ySrc:指定源矩形区域左上角的Y轴逻辑坐标。来自:求助得到的回答
参考技术A stretchblt 用这个

strectchblt(HDC hdc,int 目标X,int目标y,int 目标款,int 目标高,HDC 图像DC ,int 源图像X,int 源图像y,int 源图像宽,int 源图像高,DWORD 位标志)

如果图像失真 使用 setstretchmode 更改模式
参考技术B 最耗资源的做法,如楼上所说,SetPixel,如果不使用双缓冲DC会体验一下绘图的动画效果;
最省事儿的做法,怎么读取出来的,就按原位置写回去,这个应该是改动代码最少并且效果还好的做法。
最合理的办法,不要自定义数组,BMP指针有很多支持的操作模式,虽然不如数组循环省事儿,但一个RGB结构就可以满足对BMP内存句柄(或类)的像素点操作,全部处理直接在BMP指针上进行,处理后就可以直接显示了。

以上是关于MFC显示图像问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 mfc 对话框显示 .bmp 图像时出错

MFC在运行时在优化校准中显示图像[重复]

[转]MFC子线程更改图像数据后更新主窗口图像显示方法

第七章 KinectV2结合MFC显示和处理图像数据(下)

MFC单文档应用程序显示图像

MFC单文档应用程序显示图像