CImage 往Picture Control贴图 图像显示不正常

本文介绍了一种在VC中使用CImage类向pictureControl控件贴图时遇到的问题及解决方案。当原始图片尺寸大于控件尺寸时,图像显示异常。通过调整SetStretchBltMode方法并使用HALFTONE模式,可以有效改善图像质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用CImage 往vc控件 picture Control 上贴图的时候图像显示不太正常如图:

 

已知原始图片的宽高为640*640  而我上面picture Control  控件宽高小于原始图像宽高。

从网上找到原因是因为: 图像被缩小显示了。DRAW默认的压缩算法显示后就是这样!

在 CImage::Draw 前面加这2句就能正常显示图片了

//设置缩放模式 halftone代表最高的压缩画质
SetStretchBltMode(pDC->m_hDC,HALFTONE);
SetBrushOrgEx(pDC->m_hDC,0,0,NULL);

//如果不想使用SetBrushOrgEx,前面只加一句
//COLORONCOLOR:删除像素。该模式删除所有消除的像素行,不保留其信息
SetStretchBltMode(pDC->m_hDC,COLORONCOLOR);

 

代码修改后:

SetStretchBltMode(pDC->m_hDC, HALFTONE);
SetBrushOrgEx(pDC->m_hDC, 0, 0, NULL);

image.Draw(pDC->m_hDC, rect); //将图片画到Picture控件表示的矩形区域 

效果图就正常了:

==========================================================================

参考:http://bbs.youkuaiyun.com/topics/390393574

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值