TransparentBitmap函数设置透明位图的原理分析
来源:互联网 发布:菠萝饭软件怎么样 编辑:程序博客网 时间:2024/05/20 01:35
1、函数的功能:把一张位图设置成透明,不影响背景图的显示,并可改变大小
2、函数的思想:
(1)以当前的hdc创建5个设备兼容dc(HDC):hMem,hSave,hBack,hObject,hTemp
(2)将要透明处理的位图块选入其中一个hTemp,获取宽高,并转换成逻辑点值;
(3)创建4个临时位图(HBITMAP):bmMem,bmSave,bmBack,bmObject
其中bmMem和bmSave为设备兼容位图,bmBack和bmObject为单色位图
(4)将创建的临时位图分别选入临时DC中,效果图如下:
图1 原位图
(5)设置选入过位图块的hTemp的映射模式,并保存到hSave;(6)将hTemp的背景色设置为要透明的颜色,在原样拷贝到hObject,创建目标屏蔽码,
然后恢复源DC(hTemp)的原始背景色;
图2 目标屏蔽码位图
图3 反转的目标屏蔽码
(8)拷贝主DC的背景到目标DC:hdc→hMem;(SRCCOPY)
图4 主屏幕该位置处的背景位图
屏蔽位图的显示区:hObject→hMem;(SRCAND)
图5 目标屏蔽码屏蔽背景位图
屏蔽位图中的透明色:hBack→hTemp;(SRCAND)
图6 反转屏蔽码屏蔽位图中的透明色后的结果
将位图与目标DC的背景做异或操作:hTemp→hMem;(SRCINVERT)
图7 图6与图5异或操作的结果
拷贝目标到屏幕上:hMem→hdc;(SRCCOPY)(改变大小在此步骤中用StretchBlt)
图8 拷贝到屏幕该位置的局部效果(未改变大小)
恢复原始位图:hSave→hTemp;(SRCCOPY)(9)删除临时内存位图,删除临时内存DC;
阅读全文
0 0
- TransparentBitmap函数设置透明位图的原理分析
- TransparentBitmap函数设置透明位图的原理分析
- VC透明位图的实现原理
- 透明位图的显示(TransparentBlt函数)
- 透明位图的显示(TransparentBlt函数)
- 透明位图原理及代码
- MFC中透明位图原理
- TransparentBitmap
- 透明位图的显示
- 透明位图的显示
- 透明位图的显示
- 透明色的位图
- 透明位图的显示
- 透明位图的绘制
- 透明位图的显示
- 位图的透明显示
- 透明位图的显示
- 透明位图的显示
- ansible之variable
- 打印中文字符
- 上拉电阻
- Oracle 11g RAC 添加删除日志组(修改日志组大小)
- word2vec安装使用教程
- TransparentBitmap函数设置透明位图的原理分析
- 关于python语句与列表,元组,字典等集合的题
- java项目搭建
- SimpleDateFormat显示格式如2017-05-20 15:00:10,怎么显示为24小时的格式,而不是2017-05-20 3:00:10
- XMemcachedClient实例的add方法和set方法区别
- UE4中删除多个子物体,只能删除一半
- Python3之socket编程解决粘包问题
- android7.0下TP做接近
- 广播监听网络