在“
游戲畫(huà)面特效制作——半透明效果”的隨筆的代碼中做出了美觀的半透明效果,可是在運(yùn)行的畫(huà)面中,似乎可看到前景圖四周還留著原來(lái)位圖的矩形輪廓,感覺(jué)有點(diǎn)美中不足。不過(guò)沒(méi)關(guān)系,在本篇隨筆中將介紹如何制作更完美的透明半透明效果。
制作透明半透明效果還是要運(yùn)用前面所講的透明及半透明技巧,就是先進(jìn)行透明處理再進(jìn)行半透明處理。除此之外,還記得是怎么做透明的嗎?是利用貼圖函數(shù)直接與已經(jīng)貼在窗口中背景圖進(jìn)行兩個(gè)必要的Raster運(yùn)算完成的。可是,如果這樣做的話,那結(jié)果的透明圖已經(jīng)在窗口上產(chǎn)生了,又要怎么做半透明處理?
在這里多使用了一個(gè)內(nèi)存DC與位圖對(duì)象,先在內(nèi)存DC上完成透明,再取出這個(gè)DC傷的位圖內(nèi)容來(lái)進(jìn)行半透明處理,這樣就可以達(dá)到目的了。下面直接以一個(gè)范例來(lái)示范這種做法。這個(gè)范例中需要下面的位圖,用來(lái)制作前景圖的透明:
范例ch2_8:這個(gè)范例說(shuō)明介紹如何產(chǎn)生透明半透明的效果。
下載地址:
ch2_8(上傳到windows live空間,可能需要MSN賬號(hào)登陸)
說(shuō)明:程序源代碼中有相關(guān)的注釋。
程序運(yùn)行結(jié)果如下圖:
PS:如想獲得更多關(guān)于Visual C++游戲開(kāi)發(fā)的內(nèi)容,可點(diǎn)擊隨筆
:《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記——索引隨筆。