vc++ 绘制半透明矩形

来源:互联网 发布:淘宝自动发货平台 编辑:程序博客网 时间:2024/05/20 01:09

要绘制透明矩形,要用到 BLENDFUNCTION 这个结构体 和AlphaBlend这个函数 ,方法如下:

CBitmap tempBitmap;//用于绘制矩形的临时位图CDC tempDC;CRect rect(0,0,100,100); // 矩形大小BLENDFUNCTION blend;memset( &blend, 0, sizeof( blend) );blend.BlendOp= AC_SRC_OVER;blend.SourceConstantAlpha=ALPHA; // 设置透明度 最大255tempDC.CreateCompatibleDC(pDC);tempBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());tempDC.SelectObject(tempBitmap);tempDC.FillRect(rect,&CBrush(COLORREF(FILLCOLOR))); // 将矩形绘制到临时位图上pDC->AlphaBlend(0,0,rect.Width(),rect.Height(),&tempDC,0,0,rect.Width(),rect.Height(),blend);//将临时位图绘制到目标CDC上tempDC.DeleteDC();tempBitmap.DeleteObject();