VC 遊戲程式設計 遊戲畫面特效製作1

2021-06-05 14:22:04 字數 1644 閱讀 4751

透明效果

有時候,我們需要在畫面上顯示一張角色的影象,而這張是有自己的背景的,要是直接貼到了遊戲的畫面中,就會出項覆蓋遊戲畫面。顯示出的效果特別不好,這裡我們可以用到透明效果來處理。

其中,原理就是用bitblt() 的raster值運算去掉原的背影。但是只適用於原圖背景為黑色,才會看到效果。

如圖,左邊部分為前景圖,右邊部分為遮蔽圖

前景圖的背景必須為黑色,遮蔽圖的背景為白色

以下為顯示的背景圖

我們怎麼樣使用則會圖來處理透明呢?其實就是raster運算。

將遮蔽圖和背景圖做「and」運算,貼到目的dc; 再將前景圖和背景圖做「or」運算,貼到目的dc;

現在開始編寫程式:

在vs2008中新建win32程式,使用vc預設的框架。

首先定義全域性變數:

hbitmap bg, dra;								//用來儲存背景與前景圖

hdc hdc; //用來暫時儲存點陣圖的dc

然後在initinstance()函式中,新增**,繪製圖形。

bool initinstance(hinstance hinstance, int ncmdshow)

movewindow(hwnd, 50, 50, 1024, 768, true);

showwindow(hwnd, ncmdshow);

updatewindow(hwnd);

//建立視窗dc相容dc

hdc = getdc(hwnd);

mdc = createcompatibledc(hdc);

//載入位圖

bg = (hbitmap)loadimage(null, l"bg.bmp", image_bitmap, 1024, 768, lr_loadfromfile);

dra = (hbitmap)loadimage(null, l"dra.bmp", image_bitmap, 170, 99, lr_loadfromfile);

paint(hdc); //繪製透明位圖

releasedc(hwnd, hdc); //釋放dc

return true;

}

其中paint()中**:

void paint(hdc hdc)

最後在wndproc函式中wm_paint訊息中新增重繪

case wm_paint:

hdc = beginpaint(hwnd, &ps);

// todo: 在此新增任意繪圖**...

paint(hdc);

endpaint(hwnd, &ps);

break;

編譯執行程式:

C 遊戲製作 1

xmind部分流程圖 切片與分層 運動系統的搭建 彈簧節,雙剛體 1.新增碰撞體,實現滑鼠與小鳥的互動 2.令碰撞體 小鳥 與滑鼠位置重合 tips 小鳥的座標係為視窗 攝影機 三維 的正 而滑鼠的座標系 二維 預設是螢幕的最左下角 1 修改座標系 把滑鼠的座標系改為攝像機的居中座標系 2 刪除小鳥...

遊戲程式設計學習筆記 1

關於如何編寫乙個遊戲,一直沒有非常系統和深入的學習.之前的時間一直是在進行無目標的埋頭亂看,window api,gdi,directx等.但事實上編寫遊戲需要的知識遠比這些更多.工作以後,由於本身就在遊戲公司,並且目前每天的任務量不大,我也就可以騰出時間系統的學習遊戲程式設計了.從上上個星期開始,...

記錄windows遊戲程式設計 1

程式名稱 gamecore 2020年5月10日 用 勾勒遊戲開發所需要的程式框架 include 巨集 include define window height 600 define window width 800 define window title l 致我們永不熄滅的遊戲開發夢想 程式核...