标 题:刚完成一个透明圆角矩形代码的编写,与大家分享一下作 者:非安全时 间:2009-12-07 08:09
链 接:?t=102605
先看下网上的实现半透明矩形的代码
一个可绘制半透明矩形的代码-nohacks收集整理
CDCmemdc;
CBitmapbmp,*pOldBitmap;
memdc.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,300,200);
pOldBitmap=memdc.SelectObject(&bmp);
memdc.FillSolidRect(0,0,300,200,RGB(0,0,255));//蓝色
BLENDFUNCTIONbf;
bf.BlendOp=AC_SRC_OVER;
bf.BlendFlags=0;
bf.SourceConstantAlpha=0x7f;//半透明
bf.AlphaFormat=0;
AlphaBlend(pDC->GetSafeHdc(),0,0,300,200,memdc.GetSafeHdc(),0,0,300,200,bf);
memdc.SelectObject(pOldBitmap);
typedefstruct_BLENDFUNCTION{
BYTEBlendOp;源混合操作,只支持AC_SRC_OVER
BYTEBlendFlags;保留,必须为0
BYTESourceConstantAlpha;透明度0-255
BYTEAlphaFormat;透明这里应为0,
}BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION;
AlphaBlend函数功能:该函数用来显示具有指定透明度的图像。
函数原型:AlphaBlend(HDChdcDest,intnXOriginDest,intnYOriginDest,intnWidthDest,inthHeightDest,HDChdcSrc,intnXOriginSrc,intnYOriginSrc,intnWidthSrc,intnHeightSrc,BLENDFUNCTIONblendFunction);
参数:
hdcDest:指向目标设备环境的句柄。
nXoriginDest:指定目标矩形区域左上角的X轴坐标,按逻辑单位。blendfunction
nYOriginDest:指定目标矩形区域左上角的Y轴坐标,按逻辑单位。
nWidthDest:指定目标矩形区域的宽度,按逻辑单位。
hHeghtdest:指向目标矩形区域高度的句柄,按逻辑单位。
hdcSrc:指向源设备环境的句柄。
nXOriginSrc:指定源矩形区域左上角的X轴坐标,按逻辑单位。
nYOriginSrc:指定源矩形区域左上角的Y轴坐标,按逻辑单位。
nWidthSrc:指定源矩形区域的宽度,按逻辑单位。blendfunction
nHeightSrc:指定源矩形区域的高度,按逻辑单位。
blendFunction:指定用于源位图和目标位图使用的alpha混合功能,用于整个源位图的全局alpha值和格式信息。源和目标混合功能当前只限为AC_SRC_OVER。
AlphaBlend的详细说明:?fr=ala0
我们要实现在桌面上画透明圆角矩形,用上面的代码肯定不行,CreateCompatibleBitmap不能创建圆角矩形的BMP图片,当然我们可以用RoundRect画圆角矩形,但怎么进行透明叠加了,我们可以采用下面的方法:
创建2个与屏幕兼容的DC和BMP
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-26790-1.html
希望在以后能够继续专注我的作品