求API中AlphaBlend函数使用示例

来源:百度知道 编辑:UC知道 时间:2024/07/06 15:44:02
我写的个简单的程序

设为全局变量
int nAlpha = 0;
static BLENDFUNCTION bf;

消息处理中
case WM_CREATE:
hdc=GetDC(hwnd);
mdc=CreateCompatibleDC(hdc);
man=CreateCompatibleDC(hdc);
bo=(HBITMAP)LoadImage(NULL,TEXT("bg.bmp"),IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
bf.BlendOp = AC_SRC_OVER;
bf.BlendFlags = 0;
bf.AlphaFormat = 0;
bf.SourceConstantAlpha = nAlpha;
SetTimer(hwnd,1,50, NULL);

处理定时器消息
case WM_TIMER:
nAlpha+=15;
if(nAlpha> 255)
nAlpha = 255;
bf.SourceConstantAlpha= nAlpha;
if(nAlpha == 255)
{
KillTimer(hwnd,1);
}
在绘图函数中
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
SelectObject(mdc,bo);
AlphaBlend(hdc,0,0,800,600,mdc,0,0,800,600,bf);
EndPaint(hwnd, &ps);
return 0;

但不知道哪里出了问题。不能让那张图片淡出,,,请高手指教
或者另外给个完整的API,AlphaBlend函数

1 AlphaBlend

函数功能:该函数用来显示透明或半透明像素的位图。

函数原型:AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunction);

参数:

hdcDest:指向目标设备环境的句柄。

nXoriginDest:指定目标矩形区域左上角的X轴坐标,按逻辑单位。

nYOriginDest:指定目标矩形区域左上角的Y轴坐标,按逻辑单位。

nWidthDest:指定目标矩形区域的宽度,按逻辑单位。

hHeghtdest:指向目标矩形区域高度的句柄,按逻辑单位。

hdcSrc:指向源设备环境的句柄。

nXOriginSrc:指定源矩形区域左上角的X轴坐标,按逻辑单位。

nYOriginSrc:指定源矩形区域左上角的Y轴坐标,按逻辑单位。

nWidthSrc:指定源矩形区域的宽度,按逻辑单位。

nHeightSrc:指定源矩形区域的高度,按逻辑单位。

blendFunction:指定用于源位图和目标位图使用的alpha混合功能,用于整个源位图的全局alpha值和格式信息。源和目标混合功能当前只限为AC_SRC_OVER。

返回值:如果函数执行成功,那么返回值为TRUE;如果函数执行失败,那么返回值为FALSE。

Windows NT:若想获取更多错误信息,请调用GetLastError函数。

备注:如果源矩形区域与目标矩形区域大小不一样,那么将缩放