绘制透明位图
来源:互联网 发布:ip换地址软件 编辑:程序博客网 时间:2024/06/05 08:35
=============================================================
标题:绘制透明位图
摘要:通过AlphaBlend函数实现
备注:Windows CE + VS2005
日期:2010.4.26
姓名:朱铭雷
=============================================================
如果要绘制透明位图,可以利用AlphaBlend函数实现。该函数的原型如下:
BOOL AlphaBlend(
HDC hdcDest,
int nXOriginDest,
int nYOriginDest,
int nWidthDest,
int nHeightDest,
HDC hdcSrc,
int nXOriginSrc,
int nYOriginSrc,
int nWidthSrc,
int nHeightSrc,
BLENDFUNCTION blendFunction
);
前十个参数的含义一目了然,最关键的是最后一个函数blendFunction。
BLENDFUNCTION结构体的原型如下:
typedef struct _BLENDFUNCTION {
BYTE BlendOp;
BYTE BlendFlags;
BYTE SourceConstantAlpha;
BYTE AlphaFormat;
}BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;
BlendOp:设置为AC_SRC_OVER。
BlendFlags:必须设置为0。
SourceConstantAlpha:该成员是源位图绘制到目标DC上的透明度。设置为0,则完全透明;设置为255,则不透明绘制。可以通过调节该参数,来实现一个自己满意的效果。
AlphaFormat:该参数如果设置为AC_SRC_ALPHA,源位图必须是32 bpp的。如果不是,则ALPHABLEND函数将调用失败。
关于这个函数更详细的信息,可以查阅Windows CE帮助文档。
下面是一段基于Win32的示例程序,添加在WM_PAINT消息响应函数中:
———————————————————————————————————————
BLENDFUNCTION blend;
blend.AlphaFormat = 0;
blend.BlendFlags = 0;
blend.BlendOp = AC_SRC_OVER;
blend.SourceConstantAlpha = 100;
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,&ps);
HDC hdcBmp = CreateCompatibleDC(hdc);
HANDLE hBmpDis =
LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP),IMAGE_BITMAP,0,0,0);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hdcBmp,hBmpDis);
if(!AlphaBlend(hdc,200,200,48,48,hdcBmp,0,0,48,48,blend))
{
OutputDebugString(_T("AlphaBlend Faild/n"));
}
SelectObject(hdcBmp,hOldBmp);
DeleteDC(hdcBmp);
EndPaint (hWnd,&ps);
———————————————————————————————————————
效果如下:
源位图 绘制的透明位图:
据说AlphaBlend函数执行速度较慢,一般要谨慎使用。
利用这个函数,应该就可以实现图像渐入渐出的效果,还没试过,不知道效果如何。
- 绘制“透明”位图
- 绘制“透明”位图
- 位图透明绘制
- 透明位图的绘制
- 绘制透明位图
- GDI绘制透明位图
- 绘制透明背景位图
- 绘制透明背景位图
- VC透明位图的绘制
- vc++2008 绘制透明位图
- MFC 绘制透明背景位图
- windows下透明位图的绘制
- MFC 绘制透明位图的方法
- 绘制半透明位图以及如何画透明位图
- 透明位图
- 透明位图
- 透明位图
- 透明位图
- 二叉排序树
- 将jforum放进MyEclipse里做项目
- 非常强大的ALV例子程序
- 利用Oracle Enterprise Manager的扩展监控功能开发MySQL Plugin用于MySQL数据库监控
- 40 种网页技巧
- 绘制透明位图
- QT表格相关
- DirectShow--filter 开发 之 编译调试
- JavaScript中的innerHtml, innerText, OutHtml关系
- 悬浮QQ客服咨询特效代码
- 加解扰技术
- NetBeans 时事通讯(刊号 # 100 - Apr 26, 2010)
- Qt中的线程支持
- datetime string format