天天看点

vc 将位图多余部分变为透明

||initinstance||

hdc=GetDC(hWnd);

   mdc=CreateCompatibleDC(hdc);//创建一个内存dc

   bg=(HBITMAP)LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,600,450,LR_LOADFROMFILE);//加载背景图

   dra=(HBITMAP)LoadImage(NULL,"dra.bmp",IMAGE_BITMAP,170,99,LR_LOADFROMFILE);//加载要去掉多余部分的位图

   MyPaint(hdc);

   ReleaseDC(hWnd,hdc);

||MyPaint||

         SelectObject(mdc ,bg);

BitBlt(hdc,0,0,600,450,mdc,0,0,SRCCOPY);//贴上背景图

SelectObject(mdc,dra);

BitBlt(hdc,280,320,85,99,mdc,85,0,SRCAND);//用背景图与前景图做和运算

BitBlt(hdc,280,320,85,99,mdc,0,0,SRCPAINT);//用背景图与屏蔽图做或运算

要点讲解,加载背景图,前景图,屏蔽图,先用屏蔽图与背景图做与运算,在用前景图与屏蔽图做或运算。