当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真:

CBitmap 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->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);

SetStretchBltMode函数设置在指定设备内容中的伸展模式。

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模式以免刷子不对齐。 另外,伸展模式也依赖于设备驱动器的能力。

转载于:https://www.cnblogs.com/huty/p/8518481.html

【VS开发】解决位图缩放失真相关推荐

  1. [css] css图片缩放失真出现锯齿的如何解决呢?

    [css] css图片缩放失真出现锯齿的如何解决呢? 1.-ms-interpolation-mode,这是针对IE的解决方案.其值设置为bicubic. 2.image-rendering,这是提供 ...

  2. 解决位图失真-SetStretchBltMode

    当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真: BOOL CGraphicView::OnEraseBkgnd(CDC* pDC) {// TODO: Add your messa ...

  3. Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题

    Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题 参考文章: (1)Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题 ...

  4. lisp xy轴不等比缩放_解决高缩放等级下的抖动问题

    最近看到 deck.gl 在 medium 上的一篇文章,介绍了解决高缩放等级下「抖动」问题的思路. How (sometimes) assuming the Earth is "flat& ...

  5. 猿创征文 | 微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存

    文章目录 一.什么是 缓存? ⛅为什么用缓存? ⚡如何使用缓存 二.实现一个商家缓存 ⌛环境搭建 ♨️核心源码 ✅测试接口 三.采用 微服务 Spring Boot 注解开启缓存 ✂️@CacheEn ...

  6. 家庭装修APP软件开发解决需求

    家庭装修APP开发,家庭装修软件开发解决需求.根据家庭装修版块的人性化需求,家庭装修APP软件开发应时而生,完成平台的多用途服务项目归纳展现. 一.家庭装修APP软件开发销售市场需求剖析 现阶段的家庭 ...

  7. 同城货运app开发解决货运市场运输效率问题

    同城货运app开发解决货运市场运输效率问题 随着互联网的发展,货运市场的竞争也会变得越来越激烈.但是真正可以从用户需求出发的没有几个. 为了解决这个问题,同城货运app开发就应运而生,这款手机应用端可 ...

  8. html 图片缩小后模糊,css图片缩放失真出现锯齿的如何解决呢?

    IE6 图片缩小后会出现锯齿的问题 html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  9. Android开发解决加载图片OOM问题(非常全面 兼顾4 0以下系统)(by 星空武哥)

    转载请标明:http://blog.csdn.net/lsyz0021/article/details/51295402 我们项目中经常会加载图片,有时候如果加载图片过多的话,小则导致程序很卡,重则O ...

最新文章

  1. c# 使用dotnetbar 控件绘制曲线图形
  2. 大数据如何有序地“变废为宝”
  3. poj 2392 Space Elevator
  4. 管理软件实施(4)——如何编写售前解决方案
  5. 【图说word】 宏
  6. C语言---快速排序
  7. gradle拷贝静态资源文件_android-Gradle Copy任务不会复制文件
  8. DenseNet算法详解
  9. Linux系统批量压缩图片工具
  10. 新手程序员必读的十本经典著作
  11. arcgis建立拓扑关系
  12. HTML 修真录------深渊三君王
  13. 测试面试题集锦(六)| 软素质篇与反问面试官篇(附答案)
  14. 周爱民 - 架构师能力模型
  15. 缓存文件可以放在哪里?它们各自的特点是什么?
  16. Unity打包后的日志
  17. 泰州学院计算机与机械学院副院长,2020届考研学子风采展示
  18. 史上最全的CDN内容分发网络实战技巧
  19. python 中的File
  20. Alwayson 同步模式的坑

热门文章

  1. 为用户隐私保驾护航,腾讯广告给出“数据安全典型实践案例”!
  2. 视频教程-C++游戏编程实例精讲--3D射击游戏作弊-C/C++
  3. PHP (八种)数据类型
  4. Android没有报错,运行模拟器,提示停止运行,App根本打不开,下面是日志,烦请大佬们看看呐
  5. 物联网(1)——设备和局域网
  6. 最新Zblog博客微信小程序源码全开源完整版+带教程
  7. Android不同手机设置相同dp的图片显示大小不一致(记录)
  8. 电脑USB、HDMI、DP各种接口及速度
  9. python3 从入门到精通视频教程下载-Python 3.7从入门到精通(视频教学版)
  10. Universal USB Installer 使用教程