您的位置:首页 > 其它

WINCE如何调节位图透明度并显示

2013-05-13 20:30 441 查看
作者:太阳下的泪

转自:http://blog.sina.com.cn/s/blog_5be1061c0100bd6p.html

在WINCE中,经常要用到透明的位图,而且不同的地方透明度也不一样,这就需要调节透明度了,我在最近几天才发现这个方法。拿出来共享,而且很适合做图片的透明渐进。

//******************************************************************

//图片从透明到不透明渐进显示

//******************************************************************

void Ddraw_AlphaBlend(HWND hWnd,DWORD PicID)

{

BLENDFUNCTION blendfuction;

RECT rect = {0,0,480,272};

BYTE CurrentAlpha = 150;

blendfuction.BlendOp = AC_SRC_OVER;

blendfuction.BlendFlags = 0;

blendfuction.AlphaFormat = 0;

HDC hdcDest,hdcSrc;

HBITMAP hBmp;

hdcDest = GetDC(hWnd);

hdcSrc = CreateCompatibleDC(hdcDest);

hBmp =LoadBitmap(hInst,MAKEINTRESOURCE(PicID));

HGDIOBJ hOldSel =SelectObject(hdcSrc,hBmp);

BITMAP bmp;

GetObject(hBmp,sizeof(BITMAP),&bmp);

blendfuction.SourceConstantAlpha =CurrentAlpha; //当前透明度 0~255

if(!AlphaBlend(hdcDest,129,188,bmp.bmWidth,bmp.bmHeight,hdcSrc,0,0,bmp.bmWidth,bmp.bmHeight,blendfuction))

{

MessageBox(hWnd,TEXT("Error"),TEXT("err"),MB_OK);

}

SelectObject(hdcSrc,hOldSel);

DeleteObject(hdcSrc);

DeleteDC(hdcDest);

}

如果在做一个图片从全透明到全不透明的一个渐进教程,只需要做个循环改变CurrentAlpha的值,即可。

注意,此方法需要OS的支持,要在OS中添加一个硬件加速的组件和DIRECTDRAW.

OVER!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: