VC++中StretchBlt图像失真问题的解决办法
来源:互联网 发布:手机流量控制软件 编辑:程序博客网 时间:2024/05/05 08:04
如果目的矩形比来源矩形小,那么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);
2、调用一下 ::SetBrushOrgEx(hDestDC, 0, 0, NULL);
3、最后调用 CImage 的 StretchBlt
或者这样解决:
1。hbit = (HBITMAP)LoadImage( NULL,cBmpPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
if(hbit != NULL) {
Bitmap.Attach(hbit);
DCCompatible.CreateCompatibleDC(GetDC());
DCCompatible.SelectObject(&Bitmap);
Bitmap.GetObject(sizeof(bm),&bm);}
2。OnPaint():
pDC->SetStretchBltMode(HALFTONE);
pDC->StretchBlt(MAP_LEFT,MAP_TOP,MAP_WIDTH,MAP_HEIGHT,
&DCCompatible,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
- VC++中StretchBlt图像失真问题的解决办法
- VC++中StretchBlt图像失真问题的解决办法
- mfc中StretchBlt缩放图像失真问题
- mfc中StretchBlt缩放图像失真问题
- 解决StretchBlt()图像失真问题
- VC解决stretchblt 失真问题
- mfc中StretchBlt缩放图像失真问题【zozo】
- 解决VC中图像缩小失真的问题:利用CDC::SetStretchBltMode
- C# winform imageList控件加载图像失真问题的解决办法
- 关于GDI图像放大缩小StretchBlt显示,图像失真的解决
- StretchBlt, StretchDIBits函数显示失真问题
- iOS中NSString转float失真问题的解决办法
- StretchBlt缩小扩大失真
- MFC StretchBlt()失真
- StretchBlt()压缩图片失真
- 使用StretchBlt函数导致位图失真的解决方案
- SetSTretchBltMode解决图像失真问题
- VC 解决图片失真问题
- HDU1242 (BFS搜索中使用优先队列)
- 相同周长的图形,面积最大者是圆
- 【易微信系列二】二维码营销的哲学
- Android基础_Git的使用。。
- discuz 中实现从微信抓取消息并发帖
- VC++中StretchBlt图像失真问题的解决办法
- SSH
- 数据结构_任意N个元素有多少种出栈顺序(卡特兰数证明)
- unity3d在android环境下操作sqlite数据库
- Android开发之列表控件
- phantomjs 抓取网页
- 判断两个二叉树是否相同
- TCP简介_legend050709
- windows编译安装hadoop