由于所有的圖文件都是以一個四方矩形來存儲的,但有時我們可能會需要把一張怪物圖片貼到窗口的背景圖上,而在這種情況下如果我們直接進行貼圖,其結果如下圖所示:

制作透明效果有多種方法,但基本上都是利用貼圖時不同的Raster運算,通過轉換而最后產生相同的透明效果。
以下面的恐龍圖為例子,首先必須準備一張位圖,它的色彩分配如下所示

有了屏蔽圖就可以利用貼圖函數來產生透明效果了,所需進行的貼圖步驟如下:
(1)將屏蔽圖與背景圖做“AND”(Raster的SRCAND)運算,貼到目的地DC中。
(2)將前景圖與背景圖做“OR”(Raster的SRCPAINT)運算,貼到目的地DC中。
為什么經過上面的兩個步驟就能產生透明的效果呢?可以參看下圖:

接下來說明上述兩個步驟所產生的圖點色彩的變化。
1、屏蔽圖與背景圖做“AND”運算
(1)屏蔽圖中的黑色部分與背景圖做“AND”運算

(2)屏蔽圖中的白色部分與背景圖做“AND”運算

經過這一運算所產生的結果如圖20所示:

2、前景圖與背景圖做“OR”運算
(1)前景圖中的彩色部分與圖20做“OR”運算

(2)前景圖中的黑色部分與圖20做“OR”運算

經過這一運算后所顯示的畫面就是所需的透明圖了,圖下圖所示
范例ch2_6:透明效果的顯示。
下載地址:ch2_6(上傳到windows live空間,可能需要MSN賬號登陸)
說明:程序源代碼中有相關的注釋。
程序運行結果如下圖:

PS:如想獲得更多關于Visual C++游戲開發的內容,可點擊隨筆:《Visual C++游戲編程基礎》學習筆記——索引隨筆。