使用 2D 方法實現倒影特效

2021-06-02 12:33:44 字數 923 閱讀 1636

倒影特效可以為 ui 帶來絢麗的視覺效果,本文以乙個瀏覽器的 gridview 的例,介紹了一種以 2d 方法實現倒影特效的方法,給出了演算法的**片段。

簡介 倒影可以為 ui 介面帶來立體感,是乙個常用的 ui 特效。下圖是乙個瀏覽程式的 gridview5,該 view 的倒影特效為 ui 介面增色不少。

帶倒影特效的 gridview

實現原理

實現倒影可以使用 opengl 等 3d 介面方法,也可以用 2d 的方法模擬。

用 2d 方法實現倒影需要從兩個方面考慮:

倒影是上、下翻轉的影象;

從上到下透明度越來越大。

影象翻轉的實現

原理上講,影象的翻轉實際就是將影象資料上下行互換。

bitmap bm = bitmap.createbitmap(w, h, bitmap.config.argb_8888);for (int y = 0; y < h; y++) 透明度漸變

實現透明度漸變有兩種方法,一是使用蒙板;二是直接修改畫素資料,修改每個畫素的 alpha 值。

對於蒙板法,事先做好一張透明度漸變的圖,這就是我們的蒙板,在繪製完影象之後把蒙板繪製上去,這樣就產生了透明度漸變的效果。

對於第二種方法,我們需要首先讀出的資料,然後修改每個畫素的 alpha 值。下面的**片段的功能是逐行增加 alpha 值,產生的效果是自上向下由暗變亮。

int alpha = 0x00000000;mbitmap.getpixels (pix, 0, w, 0, 0, w, h);for (int y = 0; y> 16) & 0xff; int g = (pix[index] >> 8) & 0xff; int b = pix[index] & 0xff; pix[index] = alpha | (r<<16) | (g<<8) | b; } alpha = alpha + 0x01000000;}

2D特效之水波

2d特效之水波 水波特效在遊戲當中也比較多見,波紋實時生成演算法很多,這裡介紹一種快速演算法。之所以說它是一種快速演算法,是因為它的計算既沒有用到sin cos函式也沒有用到sin cos函式的查表演算法,它只是根據波的傳播原理,通過少量的加減 位移運算來完成。如要多了解一些波的知識,趕快去翻書哦,...

2D遊戲中的技能特效

在我們的2d圖形遊戲中不可缺少大量的光影 技能特效,像diablo ii中的魔法效果的實現,幸好我們擁有強大的cpu來為我們實現alpha混合與色彩飽和混合,接下來讓我們來討論一下如何用這些方法來實現我們遊戲中所需要的技能特效。一 alpha混合特效 alpha混合可以讓我們讓我們將一張圖象按一定程...

2D遊戲中的技能特效

在我們的2d圖形遊戲中不可缺少大量的光影 技能特效,像diablo ii中的魔法效果的實現,幸好我們擁有強大的cpu來為我們實現alpha混合與色彩飽和混合,接下來讓我們來討論一下如何用這些方法來實現我們遊戲中所需要的技能特效。一 alpha混合特效 alpha混合可以讓我們讓我們將一張圖象按一定程...