这是显示效果估计是8位或者16位了,怎么改正求救,下面是主要代码(点击“打开”按钮的响应)
MFC图片控件的标准方法(在控件属性中指定资源ID)是不能显示真彩图像的其默认最高支持是256色,也就是8bit位图
通过编程实现在对话框中显示真彩图像有两种方法:
-
不使用图片控件,而是直接在对话框的DC上绘制如果获取的是对话框的DC并通过静态框等获取区域(也可以指定区域),那么你的其它代码不需要改动
-
使用图片控件。获取图片控件的DC后因为图片控件默认是256色,其DC中对Stretch拉伸默认是像素损失模式因此你的图像会失真。这时就偠在拉伸显示之前重新设置图片控件的拉伸损失模式为像素接近模式:
需要注意的是,HALFTONE模式能产生高质量图像但也是效率最低显示最慢的模式,如果图片较大或者调用频繁不建议使用。同时也应注意在设置HALFTONE模式之后,最好调用SetBrushOrgEx函数以避免出现刷子没对准现象
另外,获取真彩图像句柄(指针)的方法也有很多可以使用CImage,也可以使用其他GDI+对象另外也可以使用图片解析代码实现。MFC的图片资源同样默认是256色,需要特殊的方法才能加载真彩位图
本回答由电脑网络分类达人 赵国琴推荐
你这是图像缩放失真的结果,根据我的经验在显示圖像前添加一句防止图像失真的语句试试看:
这样的效果是因为图像在缩小的时候出现失真的并不是他不是真彩图。使用GDI函数StretchBlt对图像进荇缩小或放大就会有这个问题,你可以试一试一楼的方法或是使用GDI+,或IPicture接口来显示图片,失真会小很多