/*
*颜色替换函数
*输入:待替换的图像指针,替换前颜色,替换后的颜色,CDC容器
*输出:替换后的图像指针
*/
CBitmap* abc::replaceColor(CBitmap *b_bmp,COLORREF res,COLORREF aim,CDC *cdc)
{
CDC m_cdc,b_cdc;
CBitmap m_bmp;
BITMAP bitmap;
b_bmp->GetBitmap(&bitmap);
CRect rect(0,0,bitmap.bmWidth,bitmap.bmHeight);
//创建适配的遮罩层图像,设备,并装入
m_bmp.CreateBitmap(bitmap.bmWidth,bitmap.bmHeight,1,1,NULL);
m_cdc.CreateCompatibleDC(cdc);
b_cdc.CreateCompatibleDC(cdc);
m_cdc.SelectObject(&m_bmp);
b_cdc.SelectObject(b_bmp);
//将替换前颜色设置为黑色
b_cdc.SetBkColor(res);
m_cdc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&b_cdc,0,0,SRCCOPY);
b_cdc.SetBkColor(RGB(0,0,0));
b_cdc.SetTextColor(RGB(255,255,255));
b_cdc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&m_cdc,0,0,SRCAND);
//将替换前颜色替换为目标颜色
b_cdc.SetBkColor(aim);
b_cdc.SetTextColor(RGB(0,0,0));
b_cdc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&m_cdc,0,0,SRCPAINT);
return b_bmp;
}
代码_图像_颜色替换
最新推荐文章于 2021-11-01 16:05:43 发布