mirror 散播福音的祭司
註冊時間: 2007-07-27 文章: 174
828.60 果凍幣
|
發表於: 2008-6-24, PM 2:38 星期二 文章主題: 貼透明圖函數API |
|
|
代碼: |
HDC dc = GetDC();
HDC bdc = CreateCompatibleDC(dc);
HBITMAP bm = (HBITMAP)LoadImage(NULL,L"你的圖檔來源.bmp",IMAGE_BITMAP,100,100,LR_LOADFROMFILE);
SelectObject(bdc,bm);
//目的DC, 座標x, 座標y, 寬度, 高度
//來源DC, 座標x, 座標y , 寬度, 高度
//透明色
TransparentBlt(dc,0,0,400,400,bdc,0,0,100,100,RGB(0,255,0));
DeleteObject(bm);
DeleteDC(bdc);
|
注:圖檔存為32位元,若以全綠當透明色,則RGB(0,255,0)就是指全綠
BitBlt也可以,但要調用Mask圖
Mask的圖片部分,人物要用全黑取代,背景用全白取代
人物圖的部分,人物的部分保持不變,背景要用全黑當作透明色
然後先貼Mask圖(值:SRCPAINT),再貼上人物圖(SRCAND),就會出現透明效果
代碼: |
範例:
HDC dc = GetDC;
HDC bdc = CreateCompatibleDC(dc);
HBITMAP bm = (HBITMAP)LoadImage(NULL,L"你的圖檔來源.bmp",IMAGE_BITMAP,100,100,LR_LOADFROMFILE);
SelectObject(bdc,bm);
HDC bdc_mask = CreateCompatibleDC(dc);
HBITMAP bm_mask = (HBITMAP)LoadImage(NULL,L"你的mask圖檔來源.bmp",IMAGE_BITMAP,100,100,LR_LOADFROMFILE);
SelectObject(bdc_mask,bm_mask);
BitBlt(dc,0,0,100,100,bdc_mask,0,0,100,100,SRCPAINT);
BitBlt(dc,0,0,100,100,bdc,0,0,100,100,SRCAND);
DeleteObject(bm);
DeleteDC(bdc);
DeleteObject(bm_mask;
DeleteDC(bdc_mask);
|
|
|