解决位图失真-SetStretchBltMode
当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真:
BOOL CGraphicView::OnEraseBkgnd(CDC* pDC)
{// TODO: Add your message handler code here and/or call defaultCBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP2);BITMAP bmp;bitmap.GetBitmap(&bmp);CDC dcCompatible;dcCompatible.CreateCompatibleDC(pDC);dcCompatible.SelectObject(&bitmap);CRect rect;GetClientRect(&rect);pDC->SetStretchBltMode(COLORONCOLOR); //设置在指定设备内容中的伸展模式。解决失真问题。//pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);return TRUE;
}
SetStretchBltMode函数设置在指定设备内容中的伸展模式。
参考:http://baike.baidu.com/view/1080401.htm
int SetStretchBltMode(
HDC hdc, // DC的HANDLE
int iStretchMode // 位图伸展模式
);
Hdc:输入,设备内容的HANDLE
iStretchMode:输入,指定的伸展模式,参数可以下面值之一:
值
描述
BLACKONWHITE
执行一个布尔AND操作在要删除的存在的图素上。如果位图是一个单色位图,这个模式保留黑色的像素为白色的像素。
COLORONCOLOR
删除像素,这个模式删除所有待删除的像素行,而不保留他们的信息。
HALFTONE
从源矩形映射像素到指定的目标矩形。目标和源矩形的平均颜色是相似的。
在设置HALFTON伸展模式之后,应用程序必须调用SetBrushOrgEx函数来设置刷源。如果该调用失败了,刷子将不对齐。
This option is not supported on Windows 95/98/Me.
STRETCH_ANDSCANS
Same as BLACKONWHITE.
STRETCH_DELETESCANS
Same as COLORONCOLOR.
STRETCH_HALFTONE
Same as HALFTONE.
STRETCH_ORSCANS
Same as WHITEONBLACK.
WHITEONBLACK
执行一个布尔或操作,使用待删除的存在的像素的颜色。如果位图是一个单色的位图,这个模式将保留白色的像素为黑色像素。
返回值:
如果函数成功,返回先前的伸展模式
如果失败,返回0
WINDOWS NT/2000/XP:使用GetLastError可以得到更多的信息,下面是其中之一:
值
意义
ERROR_INVALID_PARAMETER
一到多个参数无效
备注:
伸展模式定义了程序调用StretchBlt函数的时候怎么样在显示设备上用存在的像素合并位图行或列。
BLACKONWHITE (STRETCH_ANDSCANS)和WHITEONBLACK (STRETCH_ORSCANS)典型的用来保留单色位图的前景像素。COLORONCOLOR (STRETCH_DELETESCANS)模式通常用来保留彩色位图中的颜色。
HALFTONE相对较慢,并要求更多的源图象处理,但提供较高的图像质量。同样SetBrushOrgEx也不惜是HALFTON模式以免刷子不对齐。
另外,伸展模式也依赖于设备驱动器的能力。
解决位图失真-SetStretchBltMode相关推荐
- OpenGL.Shader:12-阴影实现 - 解决阴影失真
OpenGL.Shader:12-阴影实现 - 解决阴影失真 紧接上文的内容,那么怎么解决阴影失真的问题呢?这些问题其实都是不可回避的存在,现代技术只能尽量优化效果已达以假乱真的效果. 首先回到深度纹 ...
- 【VS开发】解决位图缩放失真
当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真: CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP2); BITMAP bmp; bi ...
- 使用StretchBlt函数导致位图失真的解决方案
本文转自网络. vc中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真,在了解解决方法前先巩固下StretchBlt的用法: StretchBlt 函数功能: 函数从源DC中复制 ...
- html怎样图片不会失真,css解决图片失真
css image-rendering属性用于浏览器如何处理图片呈现.IE下使用-ms-interpolation-mode,在IE7下只支持图片不支持透明,且默认值为"nearest-ne ...
- JS生成二维码以及保存页面为图片的解决方案:html2Canvas+file-saver+qrcodejs2的使用心得以及解决图片失真,保存不完整的解决办法
前言 最近因为工作需求,需要前端根据后端传过来的链接生成二维码,并且要使用JS保存页面为图片.然后网上搜了很多解决办法.最终都是用h5的canvas进行绘制然后保存为图片.其中,又以html2Canv ...
- 如何把UIView转成UIImage,解决模糊失真问题
最近工作中,遇到一个需求,需要把一个UIView对象转成UIImage对象显示.经过网络搜索,找到如下答案: ? 1 2 3 4 5 6 7 8 -(UIImage*)convertViewToIma ...
- java图片失真_java 图片合成 解决图片失真问题
/** * 图二的位置 从左上角开始 * @param x * @param y */ public void createPicTwo(int x,int y) { try { //读取第一张图片 ...
- css解决图片失真问题
1.背景图片失真 .con{height:100vh;width:100vm;background: url(../../assets/login/background.png) 100% 100%; ...
- java 图片合成 红色失真_java 图片合成 解决图片失真问题
源代码/** * * @param filesrc * @param logosrc * @param outsrc * @param x 位置 * @param y 位置 */ public voi ...
最新文章
- 封装echarts china map geo实现dispatch触发geoSelect事件高亮显示某个省份和城市,并定义复杂样式
- Linux下压力测试工具Webbench介绍
- Python 进阶_OOP 面向对象编程_self 的实例绑定
- android:使用audiotrack 类播放wav文件
- jsp form表里的submit点击没反应
- echarts 3d饼图_echarts构建关系图,节点可收缩和展开,可添加点击事件
- Android使用百度翻译api
- JS void运算符
- 【bzoj1047】[HAOI2007]理想的正方形 二维RMQ
- FLUSH TABLES WITH READ LOCK有多快
- 【论文笔记】From Facial Parts Responses to Face Detection: A Deep Learning Approach
- php array函数 array_sum 求数组所有值和
- Mybatis快速入门并实现CRUD操作
- wget下载github的releases的软件
- WORD目录三级标题行间距太大 目录标题行间距
- ES6——Promise笔记
- Cannot find SourceMap 'XXX.js.map'问题解决
- QT中的Singal\slot机制
- chatgpt研究框架 --技术路线-行业进程研究
- o.s.b.d.LoggingFailureAnalysisReporter报错