TransparentBlt用法
TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。
Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用该函数。
TransparentBlt函数原型如下:
BOOL TransparentBlt(
HDC hdcDest, // 目标DC
int nXOriginDest, // 目标X偏移
int nYOriginDest, // 目标Y偏移
int nWidthDest, // 目标宽度
int hHeightDest, // 目标高度
HDC hdcSrc, // 源DC
int nXOriginSrc, // 源X起点
int nYOriginSrc, // 源Y起点
int nWidthSrc, // 源宽度
int nHeightSrc, // 源高度
UINT crTransparent // 透明色,COLORREF类型
);
使用例子:
CBitmap DispBmp;
CBitmap *OldBmp;
CDC SourceDC;
DispBmp.LoadBitmap("TEST_BITMAP");//如果是IDB_XXX则不需加引号!
SourceDC.CreateCompatibleDC(PDC);
OldBmp = SourceDC.SelectObject(&DispBmp);
::TransparentBlt(PDC->m_hDC,0, 0,128, 128, SourceDC.m_hDC,0,0,128,128,RGB(0,0,0));
SourceDC.SelectObject(OldBmp);
要注意的是TransparentBlt函数使用的位图是8位或者24位的。
此外,还有两个相近的函数: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 BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop ); //此函数同样用来拷贝位图资源,但不具备缩放功能。
也就是说:bitblt直接按你指定的大小输出源dc到目标dc,而strechblt会调整你源dc大小,使之适应你所指定的目标dc大小,再输出。strechblt输出的图总是能够充填满你指定的目标DC区域,而bitblt输出的图无法布满目标dc制定区域。
TransparentBlt用法相关推荐
- TransparentBlt函数的用法
最近某次Windows程序设计的作业,老师让我们完成在游戏背景上贴人物图,并且人物能根据键盘的操作完成简单的走动,然后就遇到问题了--人物背景没办法透明化. 记录一下TransparentBlt函数的 ...
- TransparentBlt函数用法
m_bmpPaint.LoadBitmap(IDB_XXX); //第一步将资源的bitmap载入 //第二步在onpaint里面进行描画 CPaintDC pdc(this); CDC dc; CB ...
- MFC基于对话框如何添加位图并使位图背景透明(TransparentBlt函数)
MFC中比较重要的一部分学习内容即是绘图,而绘图时我们会发现如果想插入一张图片而又不想要图片的背景,或者已经把图片的背景用Ps去掉了,但是在MFC窗口中显示图片的时候又有了白色的背景,这个时候就可以使 ...
- TransparentBlt、StretchBlt与BitBlt三个函数的区别
TransparentBlt.StretchBlt与BitBlt三个函数的区别 BOOL StretchBlt( int x, //指定目的矩形区域左上角的X坐标 int y, //指定目的矩形区 ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
- python yield 和 yield from用法总结
#例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...
最新文章
- Spring Boot+Maven实现车牌训练、识别系统
- GirdView的文本属性对象省略溢出标记设置
- 报错解决:fatal error: json/json.h: No such file or directory
- java方面的文献综述怎么写_文献综述应该怎么写?
- C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
- android导航二级分类,Android实现腾讯新闻的新闻类别导航效果
- jrockit_JRockit – JRCMD有用的命令
- vue商品列表滚动效果_vue+帧动画 实现 获奖奖品列表滚动循环展示
- 记录一个美丽的小县城
- 融资12亿的春雨CEO去世,为什么创业者的焦虑停不下来?
- 求求你了,不要再自己实现这些逻辑了,开源工具类不香吗?
- 通过chrome的拓展程序访问其他网页
- 基于STM32构建EtherCAT主站(SOEM方案)5
- 苹果手机录屏软件_4款手机录屏软件推荐,你觉得哪款更好用?
- 需求调研第二篇--调研准备阶段避免哪些错误
- 使用Cmd设置 静态/动态IP
- 美国德保罗大学计算机排名,2018福布斯美国最佳大学排名德保罗大学排名第243...
- Spring Cloud负载均衡,报错:No instances available for localhost
- GraphQL学习过程应该是这样的 1
- 微信小程序-将时间转换成几秒前 几分钟前 几小时前 几天前等时间格式
热门文章
- @vue/cli3--使用命令创建项目--方法/实例
- 代理加盟共享充电宝的理由
- 黄奕出轨密会富商老公发飙怒骂 前夫补刀:淫猫忘不了偷腥
- 基于Android平台下的科学计算器
- C语言编写自己的日志系统
- 学的计算机专业要购怎样的笔记本电脑,参考:上大学了买电脑吗?大学新生笔记本电脑购置全攻略...
- 事件注册方法、阻止默认事件、事件对象、事件冒泡:事件委托、事件捕获、重置表单
- Clion下的STM32环境安装(包运行调试)
- The elements of programming style,好程序的要素
- CentOS 6 安装 Nvidia 显卡驱动