要用的 图片二张
1.因为不能上传bmp格式,所以下载后要转成bmp格式
2.把背景图(图2)转成代码中的500x281的bmp格式)
3.用ps把图1人物填充成黑色
(图1)
(图2)
GetClientRect(hWnd, &stRect);
hdc = GetDC(hWnd);
// 创建背景图(1.bmp)的位图DC
hBlackDC = CreateCompatibleDC(hdc);
SelectObject(hBlackDC, hbBlack);
// 创建原图(2.bmp)的位图DC
hSrcDC = CreateCompatibleDC(hdc);
SelectObject(hSrcDC, hbSrc);
// 创建掩码图(3.bmp)的位图DC
hMaskDC = CreateCompatibleDC(hdc);
SelectObject(hMaskDC, hbMask);
// 创建一个空的位图,并把空位图宽高设为背景图的宽高
hBufDC = CreateCompatibleDC(hdc);
hbBuf = CreateCompatibleBitmap(hdc, 500, 281);
SelectObject(hBufDC, hbBuf);
// 把原位图拷贝到空位图中
BitBlt(hBufDC, 0, 0, 500, 281, hSrcDC, 0, 0, SRCCOPY);
// 把掩码图xor方式放到空位图中
BitBlt(hBufDC, 0, 0, 500, 281, hMaskDC, 0, 0, SRCINVERT);
BitBlt(hdc, 0, 0, 500, 281, hMaskDC, 0, 0, SRCAND);
BitBlt(hdc, 0, 0, 500, 281, hBufDC, 0, 0, SRCPAINT);
// 把空位图与背景图组合起来
BitBlt(hdc, 0, 0, 500, 281, hBlackDC, 0, 0, SRCAND);
DeleteObject(hbBuf);
DeleteDC(hBufDC);
DeleteDC(hBlackDC);
DeleteDC(hSrcDC);
DeleteDC(hMaskDC);
ReleaseDC(hWnd, hdc);
ValidateRect(hWnd, &stRect);
测试程序: