TransparentBitmap-----vc小游戏游戏编程

本文介绍如何通过创建不同类型的位图,并利用Windows API函数如CreateBitmap和BitBlt来实现位图的透明效果。文章详细展示了创建单色位图和与设备兼容的位图的过程,以及如何设置背景颜色和进行位图复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 创建临时位图

   HBITMAP    bmBack, bmObject, bmMem, bmSave;
   // 单色位图
   bmBack   = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);   
   bmObject = CreateBitmap(ptSize.x, ptSize.y, 1, 1, NULL);
   // 与设备兼容位图
   bmMem    = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
   bmSave      = CreateCompatibleBitmap(hdc, ptSize.x, ptSize.y);
 
   // 将创建的临时位图选入临时DC中
   HBITMAP    OldbmBack, OldbmObject, OldbmMem, OldbmSave;
   OldbmBack   = (HBITMAP)SelectObject(hBack, bmBack);
   OldbmObject = (HBITMAP)SelectObject(hObject, bmObject);
   OldbmMem    = (HBITMAP)SelectObject(hMem, bmMem);
   OldbmSave   = (HBITMAP)SelectObject(hSave, bmSave);
 
   // 设置映射模式
   SetMapMode(hTemp, GetMapMode(hdc));
   // 先保留原始位图
   BitBlt(hSave, 0, 0, ptSize.x, ptSize.y, hTemp, 0, 0, SRCCOPY);
   // 将背景颜色设置为需透明的颜色
   cColor = SetBkColor(hTemp, cTransparentColor);
   // 创建目标屏蔽码
   BitBlt(hObject, 0, 0, ptSize.x, ptSize.y, hTemp, 0, 0, SRCCOPY);
   // 恢复源DC的原始背景色
   SetBkColor(hTemp, cColor);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值