vc++ 绘制半透明矩形

要绘制透明矩形,要用到 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();


你可能感兴趣的:(mfc,vc++,AlphaBlend,半透明矩形)