TransparentBlt、StretchBlt与BitBlt三个函数的区别

BOOL StretchBlt(

int x,  //指定目的矩形区域左上角的X坐标

int y,  //指定目的矩形区域左上角的Y坐标

int nWidth,  //指定目的矩形区域的宽度

int nHeight,  //指定目的矩形区域的高度

CDC* pSrcDC,

int xSrc,  //指定源矩形区域左上角的X坐标

int ySrc,  //指定源矩形区域左上角的Y坐标

int nSrcWidth, //指定源矩形区域的宽度

int nSrcHeight, //指定源矩形区域的高度

DWORD dwRop   //此参数参考MSDN,SRCCOPY类型为直接拷贝

);  //此函数将一个位图资源从一个矩形区域拷贝到另一个矩形区域,即缩放位图

BOOL TransparentBlt(

int xDest,

int yDest,

int nDestWidth,

int nDestHeight,

CDC* pSrcDC,

int xSrc,

int ySrc,

int nSrcWidth,

int nSrcHeight,

UINT clrTransparent

);  //此函数同样具有缩放功能,但此函数最后一个参数用来指定作为透明色的RGB;

BOOL BitBlt(

int x,

int y,

int nWidth,

int nHeight,

CDC* pSrcDC,

int xSrc,

int ySrc,

DWORD dwRop

);  //此函数同样用来拷贝位图资源,但不具备缩放功能.

用法举例:

CPaintDC dc(this);    CBitmap BackBMP;

BackBMP.LoadBitmapW(IDB_BITMAP1);

BITMAP bm;    BackBMP.GetBitmap(&bm);

CDC ImageDC;

ImageDC.CreateCompatibleDC(&dc);

CBitmap* pOldImageBMP = ImageDC.SelectObject(&BackBMP);

dc.StretchBlt(0, 0, bm.bmWidth+15, bm.bmHeight+15, &ImageDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);

ImageDC.SelectObject(pOldImageBMP);

CBitmap ForeBMP;

ForeBMP.LoadBitmapW(IDB_BITMAP2);

ForeBMP.GetBitmap(&bm);

pOldImageBMP = ImageDC.SelectObject(&ForeBMP);

dc.TransparentBlt(0, 0, bm.bmWidth+15, bm.bmHeight+15, &ImageDC, 0, 0, bm.bmWidth, bm.bmHeight, RGB(255, 255, 255));

//源BitMap中的RGB(255, 255, 255)值当作透明颜色,也就是白色。

ImageDC.SelectObject(pOldImageBMP);

TransparentBlt、StretchBlt与BitBlt三个函数的区别相关推荐

  1. php怎么输出3个函数和,PHP利用var_dump,var_export,print_r三个函数的区别示例

    感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!下面的示例看看这三个函数的具体的区别,其中var_dump和var_export比较少用,但他们两者又很相似.所以可以看看: 代码如下: /* 5 ...

  2. CListCtrl控件的InsertItem和SetItemText和SetItem三个函数的区别

    CListCtrl控件的InsertItem和SetItemText和SetItem三个函数的区别 分类: vc 2013-03-17 08:21  1548人阅读  评论(0)  收藏  举报 本人 ...

  3. isdigit()、isalpha()、isalnum() 三个函数的区别和注意点

    一.isdigit() python关于 isdigit() 内置函数的官方定义:S.isdigit() -> bool Return True if all characters in S a ...

  4. python:isdigit()、isalpha()、isalnum() 三个函数的区别和注意点

    一.isdigit() python关于 isdigit() 内置函数的官方定义: S.isdigit() -> bool Return True if all characters in S ...

  5. jquery after append appendTo三个函数的区别

    jq文档的说明是 1.after函数 定义和用法: after() 方法在被选元素后插入指定的内容. 语法: $(selector).after(content) 实例: <html> & ...

  6. controller 用 map 接收值_一文弄懂apply、map和applymap三种函数的区别

    CDA数据分析师 出品 在日常处理数据的过程中,会经常遇到这样的情况,对一个DataFrame进行逐行.逐列或者逐元素的操作,很多小伙伴也知道需要用到apply.map或者applymap,但是具体什 ...

  7. after、append和appendTo三个函数的区别

    jq文档的说明是 1.after函数 定义和用法: after() 方法在被选元素后插入指定的内容. 语法: $(selector).after(content) 实例: <html> & ...

  8. Javascript Math ceil()、floor()、round()三个函数的区别

    为什么80%的码农都做不了架构师?>>>    ceil():将小数部分一律向整数部分进位.  如: Math.ceil(12.2)//返回13  Math.ceil(12.7)// ...

  9. [Javascript] Math ceil()、floor()、round()三个函数的区别

    概述: 1. round是四舍五入的 2. ceiling是向上取整 3. float是向下取整 舍入规则: 1. Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数: 2. M ...

最新文章

  1. Go中协程间通信的方式Sync.Cond
  2. erdas2015几何校正模块在哪_在ERDAS中进行几何校正
  3. Reactive Extensions简介一
  4. GridView RadioButton 解决办法(一) -- 实现单选
  5. mysql 一致性读_mysql/mariadb知识点总结(27):一致性读,快照读
  6. android 信号强度变化,Android监听WIFI网络的变化并且获得当前信号强度
  7. [深入学习C#]匿名函数、委托和Lambda表达式
  8. websphere linux版本,安装IBM Websphere on linux
  9. 三星c7 linux驱动,三星c7手机驱动(三星c7驱动程序)V1.5.55.2 专业版
  10. Python 计算两点之间的距离
  11. 《VoIP技术构架(第2版·修订版)》一 第2章 企业电话的今天
  12. 什么是ARM TCM内存
  13. 剪不断,理不乱——Javascript,JQuery,AJAX
  14. 平安科技实习生面试经历
  15. 精美的HTML5焦点图特效
  16. 每天学点英语语法-重头开始8
  17. 简单的一个在线聊天室
  18. gdb调试[奇牛学院]
  19. 单片机移频防啸叫_麦克风的啸叫怎么用移频电路进行啸叫抑制?
  20. R语言入门教学(3)-不懂就问help()的使用及package的安装

热门文章

  1. Linux 管道文件
  2. 关于lua中userdata的理解
  3. 谷歌调试屏蔽某个请求
  4. 什么是接口?接口和抽象类的区别?
  5. phpmyadmin新建数据库无权限
  6. 猜数字小游戏来啦!!!
  7. 巨人隐退 史蒂夫·乔布斯经典语录回顾
  8. CF 2023/4/3
  9. 模块化、组件化和插件化的区别
  10. Vue.js的开发流程