C語言實現水波紋效果

2022-10-01 14:33:19 字數 1288 閱讀 8166

#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 關鍵需要...