栅格数据的显示是GIS中的一个基本需求,通常就是用Bitmap位图根据一定的空间坐标转换方式计算出起点和尺寸,画在屏幕上。有些需求要求将位图“透明”地画在屏幕上,通常实现的方式就是将位图处理为均一底色(如黑色或白色)加栅格像素点的方式,再用TransparentBlt画在屏幕上,画的时候指定黑或白为透明就可以了。如下图所示:
原始bitmap数据为这个样子:
实现方式为:
BOOL CDib::DrawTransparent(CDC* pDC, CPoint origin, CSize size,UINT transColor)
{
CDC* pTempDC = new CDC();
pTempDC->CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, m_lpBMIH->biWidth,m_lpBMIH->biHeight);
CBitmap* pOldBMP = (CBitmap*)pTempDC->SelectObject(&bmp);
if(m_lpBMIH == NULL) return FALSE;
&