本文共 850 字,大约阅读时间需要 2 分钟。
/**颜色替换函数*输入:待替换的图像指针,替换前颜色,替换后的颜色,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;}
转载地址:http://angpb.baihongyu.com/