我把你代码里的Alpha(),TransparentBlt2这2个函数复制到我的程序里,可是不能实现半透明效果,请你帮我看看我的程序哪错了好吗?或者是还要处理什么其他部分的内容?Alpha的改动如下
void game::Alpha(int x,int y,int w,int h) //w,h是要半透明处理的图片的宽和高;
{
HDC hdc;
if (lpDDSback->GetDC(&hdc) != DD_OK) return; //lpDDSback是我定义的主缓存
BitBlt(hDC0,0,0,w,h,hdc,x,y,SRCCOPY);
BitBlt(hDC1,0,0,w,h,hdc,x,y,SRCCOPY);
lpDDSback->ReleaseDC(hdc);
if (lpDDSmap->GetDC(&hdc) != DD_OK) return;//lpDDSmap是要半透明处理图片的页面
TransparentBlt2(hDC1,0,0,w,h,hdc,0,0,w,h,RGB(255,255,255));//透明显示
AlphaBlend(hDC1,0,0,w,h,hDC0,0,0,w,h,rBlend);//半透明处理
BitBlt(hdc,0,0,w,h,hDC1,0,0,SRCCOPY);
lpDDSmap->ReleaseDC(hdc);
if(lpDDSback->BltFast
(x,y,lpDDSmap[1],NULL,DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY)!=DD_OK) return;
}
请唐老师一定要帮忙看下,如果方便请教我下怎么实现半透明好吗? |