窗体裁剪

void CDlgLogon::SetupRegion(CDC *pDC, CString BackPngName, COLORREF TransColor )
{
CRect cRect;
CRgn  wndRgn, rgnTemp;
//取得窗口大小


GetWindowRect(&cRect);
CPngImage ImageBack;
ImageBack.LoadImage(AfxGetInstanceHandle(),BackPngName);
ImageBack.DrawImage(pDC,0,0);


//首先创建默认的完整区域为完整的窗口区域
wndRgn.CreateRectRgn(0, 0, cRect.Width(),cRect.Height());


//下面的两层循环为检查背景位图象素颜色,进行透明区域处理;
//当象素颜色为指定的透明值时,即将该点从区域中剪裁掉。
COLORREF cl=0;
for(UINT x=0;x<=cRect.Width() ;x++)
{
for(UINT y =0; y<=cRect.Height(); y++)
{
//取得坐标处象素的颜色值
cl= pDC->GetPixel(x ,y);
if(cl== TransColor)
{
//象素颜色为指定的透明色,创建透明“微区域”
rgnTemp.CreateRectRgn(x,y, x+1, y+1);
//“扣像”,从完整的区域中“扣除”透明的“微区域”
wndRgn.CombineRgn(&wndRgn,&rgnTemp, RGN_XOR);
//删除刚创建的透明“微区域”,释放系统资源
rgnTemp.DeleteObject();  
}
}
}
ImageBack.DestroyImage();
//用设定窗口为指定的区域
SetWindowRgn((HRGN)wndRgn,TRUE);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值