VC++中StretchBlt图像失真问题的解决办法
VC++中StretchBlt图像失真问题的解决办法
2010年11月02日 09:56:00 gengxt2003 阅读数:7972
VC++中StretchBlt图像失真问题的解决办法
2009年05月12日 星期二 14:36
在 VC 中使用 StretchBlt 会碰到一些与点阵图大小缩放相关的一些问题。在扩展一个点阵图时,StretchBlt必须复制图素行或列。如果放大倍数不是原图的整数倍,那么此操作会造成产生的图像有些失真。
如果目的矩形比来源矩形小,那么StretchBlt在缩小图像时就必须把两行(或列)或者多 行(或列)的图素合并到一行(或列)。完成此操作有四种方法,它根据装置内容伸展模式属性来选择其中一种方法。您可使用 SetStretchBltMode 函数来修改这个属性。 SetStretchBltMode (hdc, iMode) ; iMode 可取下列值: BLACKONWHITE 或者 STRETCH_ANDSCANS(内定):如果两个或多个图素得合并成一个图素,那么StretchBlt会对图素执行一个逻辑AND运算。这样的结果是只有全部的原始图素是白色时该图素才为白 色,其实际意义是黑色图素控制了白色图素。这适用于白背景中主要是黑色的单色点阵图。 WHITEONBLACK 或 STRETCH_ORSCANS:如果两个或多个图素得合并成一个图素,那么StretchBlt 执行逻辑OR运算。这样的结果是只有全部的原始图素都是黑色时才是黑色,也就是说由白色图 素决定颜色。这适用於黑色背景中主要是白色的单色点阵图。 COLORONCOLOR 或 STRETCH_DELETESCANS:StretchBlt 简单地消除图素行或列,而没有任何逻辑组合。这是通常是处理彩色点阵图的最佳方法。 HALFTONE 或 STRETCH_HALFTONE:Windows根据组合起来的来源颜色来计算目的的平均颜色。这将与半调调色盘联合使用,第十六章将展示这一程序。 利用StretchBlt缩小图片时有时会出现颜色失真。解决步骤如下: 1、先把目标DC (也就是 HDC hDestDC) ::SetStretchBltMode (hDestDC, HALFTONE); 或者这样解决: 1。hbit = (HBITMAP)LoadImage( NULL,cBmpPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 2。OnPaint(): pDC->SetStretchBltMode(HALFTONE); &DCCompatible,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); |
VC++中StretchBlt图像失真问题的解决办法相关推荐
- VS中使用 loadimage()函数载入图像报错与图像无法载入的解决办法
VS中使用 loadimage()函数载入图像报错与图像无法载入的解决办法 1. 载入图像报错 使用loadimage()加载图片时,程序报错界面如下图 报错内容如下: 解决方案1: 在图片名称前加个 ...
- ABBYY FineReader中检测不到表格的解决办法
ABBYY FineReader是一款图文识别(OCR)软件,使用ABBYY FineReader识别带有表格的文档时,表格区域对以表格形式排列的表格或文本片断进行标记,但有时会出现程序自动检测表格失 ...
- 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法
title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...
- 使用webpack打包后,vscode中vue代码变白色的解决办法
使用webpack打包后,vscode中vue代码变白色的解决办法 卸载vetur,重装vetur
- java手机界面太小_手机端页面在项目中遇到的一些问题及解决办法
原标题:手机端页面在项目中遇到的一些问题及解决办法 来源:键盘上的眼泪 segmentfault.com/a/1190000015178877 1.解决页面使用overflow: scroll在iOS ...
- Maven中 jar包冲突原理与解决办法依赖传递
Maven中 jar包冲突原理与解决办法&依赖传递 管理包依赖是 Maven 核心功能之一,下面通过如何引入 jar 包:如何解析 jar 包依赖:包冲突是如何产生:如何解决包冲突:依赖管理解 ...
- 工作总结 EntityFramework中出现DateTime2异常的完美解决办法
EntityFramework中出现DateTime2异常的完美解决办法 今天在使用entityframework往数据库插入数据的时候,突然出现了一个数据类型转换异常的问题: System.Data ...
- C中不安全的函数以解决办法汇总
C中不安全的函数以解决办法汇总 C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库.最有害的罪魁祸首是不进行自变量检查的.有问题的字符串操作(strcpy.strcat.sprintf 和 gets ...
- 在ASP.net中的UpdatePanel,弹窗失败解决办法
原文:在ASP.net中的UpdatePanel,弹窗失败解决办法 最开始我用: Response.Write("<script>alert('和哈呵呵呵呵呵呵!')</s ...
最新文章
- 如何下载python软件-python如何下载
- oracle数据文件移动方法
- Linux LXR 网站
- 【Linux】一步一步学Linux——ipcrm命令(142)
- PHP中header函数的用法及其注意重点是什么呢
- python硬件测试开发工程师_硬件测试工程师
- 相见恨晚的 18 个 Linux 趣味命令,最后一个千万要尝试~
- android 仓库管理 毕业论文,基于Android的仓库管理系统的设计与实现.zip
- WPS有空白页老删不掉,delete和退格都删不了
- 计算机密码无法输完整,笔记本电脑键盘失灵无法输入密码怎么解决
- 音王点歌系统怎么连接服务器,KTV音响设备怎么连接?点歌机怎么连接?学习下...
- 【部署】蓝绿发布、滚动发布、灰度发布,有什么区别
- symbian3 java游戏测试,Symbian^3愤怒的小鸟测试版C7首发实测
- Android程序员必装apk
- Vue3+Vite项目配置Eslint+Prettier+Husky+Lint-Staged+Commitlint
- 关于华为应用市场的上架流程
- 2022李永乐线性代数
- LT8618SX 是龙迅的低功耗版本 HDMI 发射器,其基于 ClearEdgeTM 技术
- 山东双软认证需要什么条件
- 斯坦福大学的低码率音频编码博士论文