窗口透明化 AlphaBlend

在网上搜了下AlphaBlend的说明,也看了MSDN,但还是不太明白,自己就动手试了下,结果OK。


先贴下代码

BLENDFUNCTION   bf;   
bf.AlphaFormat=0;   
bf.BlendFlags=0;   
bf.BlendOp=AC_SRC_OVER;   
bf.SourceConstantAlpha=128;//透明度50%(0 - 255)

CDC* parentDc = GetParent()->GetDC();
CDC* dc = GetDC();
CRect rt;
GetClientRect(&rt);

CRect rtWnd;
GetWindowRect(&rtWnd);
GetParent()->ScreenToClient(&rtWnd);
AlphaBlend(dc->GetSafeHdc(),0,0, rt.Width(), rt.Height(), parentDc->GetSafeHdc(), rtWnd.left, rtWnd.top, rt.Width(), rt.Height(), bf);
ReleaseDC(parentDc);
ReleaseDC(dc);


这段代码的背景如下:一个对话框,点击一个按钮,接着执行上面的代码;

所谓透明,其实就是把自己挡住的部分显示在自己的界面,其实有个像素的处理,API函数AlphaBlend就是做了这个处理;

因为这只是测试,所以如果你要实现自动透明化,那应该在OnPaint中做相应的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值