• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(8)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜


                由于所有的圖文件都是以一個四方矩形來存儲的,但有時我們可能會需要把一張怪物圖片貼到窗口的背景圖上,而在這種情況下如果我們直接進行貼圖,其結果如下圖所示:
                這似乎不是所要的結果。在本篇隨筆中將要討論透明效果,就是要利用BitBlt()貼圖函數以及Raster值的運算來將圖片中不必要的部分去掉(又稱去背),使得圖中的主體可以與背景圖完全融合。
                制作透明效果有多種方法,但基本上都是利用貼圖時不同的
            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++游戲編程基礎》學習筆記——索引隨筆
            posted on 2010-04-08 16:52 煙皚 閱讀(1028) 評論(2)  編輯 收藏 引用 所屬分類: 《Visual C++游戲編程基礎》學習筆記

            Feedback

            # re: 游戲畫面特效制作——透明效果 2010-04-08 17:35 陳梓瀚(vczh)
            GDI的話需要引入一個img32.lib還是什么鬼lib的話,可以使用名字好像是TransparentBlt的函數,只要你的圖片經過預處理,就可以根據每一個像素不同的alpha來處理每一個像素了。這樣畫出來會更快而且更漂亮。  回復  更多評論
              

            # re: 游戲畫面特效制作——透明效果 2010-04-08 17:37 煙皚
            @陳梓瀚(vczh)
            剛接觸Visual C++游戲開發的東西,對GDI也不是特別的懂。你說的那些,等我弄得差不多了~~再去看看,然后再補充這篇博客~~謝謝了~  回復  更多評論
              

            国产精品激情综合久久 | 日韩精品无码久久一区二区三| 人妻无码αv中文字幕久久 | 国产精品无码久久四虎| 久久精品国产亚洲5555| 久久精品极品盛宴观看| 久久久久人妻一区精品色| 一本大道久久a久久精品综合| 青青草原综合久久大伊人导航 | 精品久久久久久无码不卡| 久久综合香蕉国产蜜臀AV| 久久久WWW成人免费精品| 蜜臀av性久久久久蜜臀aⅴ麻豆| 精品多毛少妇人妻AV免费久久| 色欲av伊人久久大香线蕉影院| 国内精品久久久久久中文字幕 | 97久久精品人人澡人人爽| 久久综合九色综合网站| 思思久久99热免费精品6| 久久精品国产秦先生| 久久久久亚洲AV无码永不| 亚洲国产小视频精品久久久三级| 99精品久久精品一区二区| 久久综合九色综合网站| 日韩欧美亚洲国产精品字幕久久久 | 青春久久| 热综合一本伊人久久精品| 一级做a爰片久久毛片人呢| 精品国产VA久久久久久久冰| 国内精品久久久久影院薰衣草 | 久久久久亚洲av无码专区喷水 | 精品久久久久久无码中文野结衣| 99国产欧美久久久精品蜜芽 | www性久久久com| 精品少妇人妻av无码久久| 久久ww精品w免费人成| 国产偷久久久精品专区| av色综合久久天堂av色综合在 | 国产精品视频久久久| 日韩欧美亚洲综合久久影院d3| 久久久久人妻一区二区三区vr |