​MFC中TransparentBlt函数怎么使用

avatar
作者
猴君
阅读量:1

TransparentBlt函数用于在设备上下文中绘制带有透明效果的图像。

函数原型:

BOOL TransparentBlt(   HDC   hdcDest,   int   xoriginDest,   int   yoriginDest,   int   wDest,   int   hDest,   HDC   hdcSrc,   int   xoriginSrc,   int   yoriginSrc,   int   wSrc,   int   hSrc,   UINT  crTransparent ); 

参数说明:

  • hdcDest:目标设备上下文的句柄。
  • xoriginDest:目标矩形区域的左上角的x坐标。
  • yoriginDest:目标矩形区域的左上角的y坐标。
  • wDest:目标矩形区域的宽度。
  • hDest:目标矩形区域的高度。
  • hdcSrc:源设备上下文的句柄。
  • xoriginSrc:源矩形区域的左上角的x坐标。
  • yoriginSrc:源矩形区域的左上角的y坐标。
  • wSrc:源矩形区域的宽度。
  • hSrc:源矩形区域的高度。
  • crTransparent:透明颜色值。与源图像中颜色相同的像素将被视为透明。

使用示例:

CImage image; image.Load(_T("path/to/image.png"));  CDC* pDC = GetDC(); CDC memDC; memDC.CreateCompatibleDC(pDC); CBitmap bmp; bmp.CreateCompatibleBitmap(pDC, image.GetWidth(), image.GetHeight()); memDC.SelectObject(&bmp); memDC.BitBlt(0, 0, image.GetWidth(), image.GetHeight(), pDC, 0, 0, SRCCOPY); image.BitBlt(memDC.GetSafeHdc(), 0, 0, SRCCOPY); TransparentBlt(pDC->GetSafeHdc(), x, y, width, height, memDC.GetSafeHdc(), 0, 0, image.GetWidth(), image.GetHeight(), RGB(255, 0, 255));  ReleaseDC(pDC); 

以上示例中,首先加载图像文件到CImage对象中,然后创建一个兼容的内存设备上下文和位图对象,将位图对象选入设备上下文,使用BitBlt函数将屏幕上的图像复制到内存设备上下文中,然后使用BitBlt函数将图像绘制到内存设备上下文中,最后使用TransparentBlt函数将内存设备上下文中的图像绘制到屏幕上的目标设备上下文中,并指定透明颜色。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!