電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
貼透明圖函數API

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
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);
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作