/*
*顔色替換函數
*輸入:待替換的圖像指針,替換前顔色,替換後的顔色,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;
}