使用StretchBlt函数缩小图片进行显示时,会出现比较明显的失真问题。

不同与图片放大问题,缩小图片失真,是因为WINDOWS默认的缩小图片算法,是直接删除掉多余的点信息,从而导致图片显示失真。

使用SetStretchBltMode函数,设置缩放模式为HALFTONE,即可解决此问题。

注:

int SetStretchBltMode(HDC hdc, int iStretchMode);

hdc:设备环境句柄。

iStretchMode:指定拉伸模式。它可以取下列值,这些值的含义如下:

BLACKONWHITE:使用消除和现在的像素颜色值进行逻辑AND(与)操作运算。如果该位图是单色位图,那么该模式以牺牲白色像素为代价,保留黑色像素点。

COLORONCOLOR:删除像素。该模式删除所有消除的像素行,不保留其信息。

HALFTONE:将源矩形区中的像素映射到目标矩形区的像素块中,覆盖目标像素块的一般颜色与源像素的颜色接近。在设置完HALFTONE拉伸模之后,应用程序必须调用SetBrushOrgEx函数来设置刷子的起始点。如果没有成功,那么会出现刷子没对准的情况。

STRETCH_ANDSCANS:与BLACKONWHITE一样。

STRETCH_DELETESCANS:与COLORONCOLOR一样。

STRETCH_HALFTONE:与HALFTONE相同。

STRETCH_ORSCANS:与WHITEONBLACK相同。

WHITEONBLACK:使用颜色值进行逻辑OR(或)操作,如果该位图为单色位图,那么该模式以牺牲黑色像素为代价,保留白色像素点。

使用StretchBlt函数缩小图片时的失真问题相关推荐

  1. resize函数缩小图片的尺寸 车辆检测

    场景 使用resize函数缩小图片的尺寸,希望能够减少车辆上不相干的颜色,例如车牌,例如车镜,或者是出租车的车顶,希望屏蔽相关的细节,从而描绘出车辆的轮廓,最终没有达到任何的效果,contour没有实 ...

  2. ffmpeg 调整相片大小_resize函数缩小图片的尺寸 车辆检测

    场景 使用resize函数缩小图片的尺寸,希望能够减少车辆上不相干的颜色,例如车牌,例如车镜,或者是出租车的车顶,希望屏蔽相关的细节,从而描绘出车辆的轮廓,最终没有达到任何的效果,contour没有实 ...

  3. 用StretchBlt()来设置图片时,图片背景变黑色。

    CRect rect3;//定义矩形类 CImage image; //创建图片类 image.Load(_T("res/导出.png")); m_export.GetClient ...

  4. 【VS开发】MFC学习之 解决StretchBlt()图片缩放绘图失真

    vc中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真.在了解解决方法前先巩固下StretchBlt的用法: StretchBlt 函数功能:函数从源矩形中复制一个位图到目标矩形 ...

  5. 使用StretchBlt函数导致位图失真的解决方案

    本文转自网络. vc中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真,在了解解决方法前先巩固下StretchBlt的用法: StretchBlt 函数功能: 函数从源DC中复制 ...

  6. 使用openCV 的cv2.imread函数读取图片找不到路径

    使用openCV 的cv2.imread函数读取图片时出现,找不到图像的问题: 错误如下: 尝试把 \ 换为 /, 或者把 \ 换为 \ 都不可以. 后来发现,是中文路径的问题,将中文路径换为英文路径 ...

  7. php如何缩小图片,PHP图片缩小函数一例

    /** * 缩小图片函数 * 删除了原始图片保留了操作后的图片 * @param string $fileName * @return void */ private function createS ...

  8. html 图片放大保证不失真,教你如何在保证图片不失真的情况下缩小图片大小

    教你如何在保证图片不失真的情况下缩小图片大小 随着卡片机.单反的普及,越来越多的人有能力购买和拥有一台属于自己的相机,并随时随地拍摄下喜欢的风景.人物,记录身边美好的一切.照片拍下后,大部分人喜欢放到 ...

  9. StretchBlt()函数使用

    StretchBlt函数从源矩形中复制一个位图到目标矩形,必要时按目前目标设备设置的模式进行图像的拉伸或压缩. 说白了功能就是缩放. 函数原型如下 函数原型:BOOL StretchBlt(HDC h ...

最新文章

  1. 最新论文解读 | 神经网络“剪枝”的两个方法
  2. saltstack一些常用模块和api调用方法
  3. 如何让服务器端持续监听客户端的请求?
  4. 【遇到问题】ORA-27102 ORA-01034
  5. RHEL6入门系列之十一,内/外部命令、重定向、管道
  6. 【PAT甲级 排序】1036 Boys vs Girls (25 分) C++
  7. C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理
  8. ( function(){…} )()
  9. 伯努利数(详解 + 例题 :P3711 仓鼠的数学题)
  10. 多主机Docker容器的VLAN划分
  11. 将老电脑从windows xp系统升级到10//将win10 32位系统更为64位
  12. Denoising DNA deep sequencing data—high-throughput sequencing errors and t对DNA深度测序数据进行去噪-高通量测序错误及其校正
  13. 添加metadata到tflite模型
  14. dell服务器设置CPU高性能,DellR720服务器提示cpu1 internal error (IERR)
  15. python批量修改文件名字为数字编号
  16. Android 实现GIF播放的几种方式
  17. 【BZOJ3131】淘金(SDOI2013)-数位DP+优先队列
  18. 提示键盘锁定大写jQuery代码
  19. Win10/Ubuntu20.04编译ros2_documentation-foxy过程
  20. 翟振武教授的荒唐逻辑

热门文章

  1. 前端自学的学习进程安排
  2. 妈妈经验:小儿咳嗽怎么办?夜咳?寒咳?热咳?
  3. 易维帮助台:客户为王的时代,拿什么提升客户体验?
  4. 手机游戏显示无法连接服务器,幻塔无法连接服务器怎么办游戏进不去解决方法...
  5. 黑客帝国全集故事情节解析
  6. Elasticsearch专栏-3.es基本用法-基础api
  7. .nii格式文件python_python 读取.nii格式图像实例
  8. 网络空间安全技术-2
  9. Android studio观察日志简单实例
  10. CreateProcess 输出重定向