/*
*图像合成函数
*输入:客户区GDI句柄
*输出:空
*/
void abc::paintPicAnd(CDC *cdc)
{
//变量初始化
CRect rect;
CBitmap f_bmp,b_bmp,m_bmp;
CDC f_cdc,b_cdc,m_cdc;
COLORREF colorTran;
GetClientRect(rect);
CBrush brush(RGB(255,255,255));
//CDC适配创建
f_cdc.CreateCompatibleDC(cdc);
b_cdc.CreateCompatibleDC(cdc);
m_cdc.CreateCompatibleDC(cdc);
//Bitmap创建
f_bmp.LoadBitmap(IDB_FRONT);
b_bmp.LoadBitmap(IDB_BACK);
m_bmp.CreateBitmap(rect.Width(),rect.Height(),1,1,NULL);//遮罩层创建的是单色图片,黑白作为逻辑(二值性)
//CDC,Bitmap绑定
f_cdc.SelectObject(&f_bmp);
b_cdc.SelectObject(&b_bmp);
m_cdc.SelectObject(&m_bmp);
//遮罩层填充
colorTran=f_cdc.GetPixel(1,1);
f_cdc.SetBkColor(colorTran);
m_cdc.SelectObject(&brush);
m_cdc.FillRect(&rect,&brush);
//前景复制到遮罩层,真彩向单色拷贝时,真彩的背景色拷贝为白色,其他颜色为黑色
m_cdc.BitBlt(0,0,rect.Width(),rect.Height(),&f_cdc,0,0,SRCCOPY);
///遮罩 与 复制到前景,单色向真彩转换时,白色转为真彩的背景色,黑色转为前景色
f_cdc.SetBkColor(RGB(0,0,0));//遮罩层底色黑色
f_cdc.SetTextColor(RGB(255,255,255));//遮罩层画笔白色
// cdc->BitBlt(0,0,rect.Width(),rect.Height(),&m_cdc,0,0,SRCCOPY);
f_cdc.BitBlt(0,0,rect.Width(),rect.Height(),&m_cdc,0,0,SRCAND);
//遮罩 与 复制到背景
b_cdc.SetBkColor(RGB(255,255,255));//遮罩层底色白色
b_cdc.SetTextColor(RGB(0,0,0));//遮罩层画笔黑色
b_cdc.BitBlt(0,0,rect.Width(),rect.Height(),&m_cdc,0,0,SRCAND);
//前景 或 复制到背景
b_cdc.BitBlt(0,0,rect.Width(),rect.Height(),&f_cdc,0,0,SRCPAINT);
//背景复制到客户区
cdc->BitBlt(0,0,rect.Width(),rect.Height(),&b_cdc,0,0,SRCCOPY);
}