要绘制透明矩形,要用到 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; // 设置透明度 最大255
tempDC.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();