透明位图的实现

透明位图的显示
包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数: TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另 一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。

一、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类型
);

使用示例(在对话框的OnPaint函数中添加):
CPaintDC dc(this); //获得对话框的DC
//载入位图资源,开始透明绘制
CBitmap SampleBMP;
BOOL bSuccess = SampleBMP.LoadBitmap(IDB_BITMAP2);
CDC ImageDC;
ImageDC.CreateCompatibleDC(&dc);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&SampleBMP);
TransparentBlt(dc.m_hDC, 0, 0, 48, 48, ImageDC.m_hDC, 0, 0, 48, 48, RGB(0x00,0x00,0x00));
ImageDC.SelectObject(pOldImageBMP);

二、补充内容
有关透明位图实现原理的文章参看附件文件夹中的透明位图显示.mht文件。

转载于:https://www.cnblogs.com/super119/archive/2011/04/10/2011334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值