#include
#include
#include
#define pic_height 600
#define pic_width 800
void framefun(); // 幀邏輯函式,處理每一幀的邏輯
void renderfun(); // 幀渲染函式,輸出每一幀到顯示裝置
image src_img; // 原位圖
image dest_img(pic_width, pic_height); // 處理後顯示的點陣圖
dword *img_ptr1; // 原片記憶體指標
dword *img_ptr2; // 處理後顯示的點陣圖記憶體指標
// 以下兩個 buf 為每乙個點的波幅,前者為當前波幅,後者為下乙個時刻的波幅。
short *buf = new short[pic_height*pic_width+pic_width];
short *buf2 = new short[pic_height*pic_width+pic_width];
void main()
endbatchdraw();
}// 計算出下乙個時刻所有點的波幅
void nextframe()
short *ptmp = buf;
buf = buf2;
buf2 = ptmp;
}// 處理當前時刻波幅影響之後的點陣圖,儲存在 dest_img 中
void renderripple() }}
// 滑鼠模擬投石頭
// 引數說明:
// (x, y): 滑鼠座標
// stonesize: 「石頭」的大小
// stoneweight: 投「石頭」的力度
// ps: 如果產生錯誤,一般就是陣列越界所致,請酌情調整「石頭」的大小和「石頭」的力度
void disturb(int x, int y, int stonesize, int stoneweight)
i++;
return fps;
}// 渲染
void 程式設計客棧renderfun()
// 邏輯
void framefun()
else if(msg.umsg == wm_lbuttondown)
flushmousemsgbuffer();
} // 計算下一幀的波幅
nextframe();
}本文標題: c語言實現水波紋效果
本文位址:
點選水波紋效果
當布局沒有設定 background屬性的時候給其布局中加入一下 就是系統預設的水波紋效果 比如在recyclerview的item布局中,或者其他任意布局中。android background android attr selectableitembackground android click...
OC實現水波紋動畫
用oc原生的貝塞爾曲線來實現該效果,下面直接上 void showwatterrippleanimation void addanimationview 將目標曲線做放大動畫 void addanimationwithshapelayer cashapelayer layer delay cgflo...
自定義view實現水波紋效果
參考csdn大神 啟艦的部落格自己實現了一遍,碰到的坑有2個 1 記得呼叫mpath.reset 否則每次的path內容會疊加在一起,就會充滿整個view 不再出現水波紋效果 2 中的呼叫貝塞爾曲線的引數原理要弄明白 其實每次呼叫ondraw 方法時,呼叫了mpath.moveto x,y 關鍵需要...