求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函数。
备注:如果源矩形区域与目标矩形区域大小不一样,那么将缩放