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!!
转自: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!!
相关文章推荐
- [转] WINCE如何调节位图透明度并显示
- Silverlight中如何操作位图(亮度及对比度调节、浮雕效果、放大镜效果等)
- VC中如何在对话框上显示位图
- 如何在wince的任务栏上显示窗口图标
- wince如何去掉APP窗口的动画显示效果
- WinCE如何使用PictureBox的Image属性通过图片路径显示图片
- 如何加载和显示位图bitblt
- 如何以椭圆形显示位图
- 如何显示位图
- VC/MFC 如何将位图缩放显示在Static控件中
- WINCE 如何显示PNG和GIF图片
- WINCE 如何显示PNG和GIF图片
- WINCE 如何显示PNG和GIF图片
- 如何显示位图,位图相关知识
- 如何在对话框中显示一个位图
- 如何实现掩码位图的透明显示
- 如何在普通按钮上显示不同的位图
- 连载 1 - 深入讨论 Android 关于高效显示图片的问题 - 如何高效的加载大位图
- WinCE下的位图显示
- listctrl如何显示位图