亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言實現水波紋效果

2020-01-26 13:45:32
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言實現水波紋效果的具體代碼,供大家參考,具體內容如下

#include <graphics.h>   #include <conio.h>#include <stdio.h>#define PIC_HEIGHT 600#define PIC_WIDTH 800void 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(){ // 初始化設備,加載圖片  initgraph(PIC_WIDTH, PIC_HEIGHT);  SetWindowText(GetHWnd(), "Wave-水波紋效果(點擊產生一個水波紋。移動鼠標連續產生水波紋)");  loadimage(&src_img, "water.jpg"); // 加載圖片,大小:800*600 setbkmode(TRANSPARENT); settextcolor(BLACK); setfont(25, 0, "Arial"); // 獲得內存指針 img_ptr1 = GetImageBuffer(&src_img); img_ptr2 = GetImageBuffer(&dest_img); // 初始化波幅數組 memset(buf, 0, (PIC_HEIGHT*PIC_WIDTH+PIC_WIDTH) * sizeof(short)); memset(buf2, 0, (PIC_HEIGHT*PIC_WIDTH+PIC_WIDTH) * sizeof(short)); // Let's Go! BeginBatchDraw(); // 雙緩沖,閃屏時需要 while(true)  { FrameFun(); RenderFun(); FlushBatchDraw(); Sleep(1); } EndBatchDraw();}// 計算出下一個時刻所有點的波幅void nextFrame(){ for(int i = PIC_WIDTH; i < PIC_HEIGHT*(PIC_WIDTH-1); i++) { // 公式:X0'= (X1+X2+X3+X4) / 2 - X0 buf2[i] = ((buf[i-PIC_WIDTH] + buf[i+PIC_WIDTH] + buf[i-1] + buf[i+1]) >> 1) - buf2[i]; // 波能衰減 buf2[i] -= buf2[i] >> 5; } short *ptmp = buf; buf = buf2; buf2 = ptmp;}// 處理當前時刻波幅影響之后的位圖,保存在 dest_img 中void RenderRipple(){ int i = 0; for (int y = 0; y < PIC_HEIGHT; y++)  {  for (int x = 0; x < PIC_WIDTH; x++)   {  short data = 1024 - buf[i];  // 偏移  int a = ((x - PIC_WIDTH / 2) * data / 1024) + PIC_WIDTH / 2;  int b = ((y - PIC_HEIGHT / 2) * data / 1024) + PIC_HEIGHT / 2;  // 邊界處理  if (a >= PIC_WIDTH) a = PIC_WIDTH - 1;  if (a < 0)  a = 0;  if (b >= PIC_HEIGHT) b = PIC_HEIGHT - 1;  if (b < 0)  b = 0;    // 處理偏移   img_ptr2[i] = img_ptr1[a + (b * PIC_WIDTH)];  i++;  } }}// 鼠標模擬投石頭// 參數說明:// (x, y): 鼠標坐標// stonesize: “石頭”的大小// stoneweight: 投“石頭”的力度// Ps: 如果產生錯誤,一般就是數組越界所致,請酌情調整“石頭”的大小和“石頭”的力度void disturb(int x, int y, int stonesize, int stoneweight) { // 突破邊界不處理 if ((x >= PIC_WIDTH - stonesize) || (x < stonesize) || (y >= PIC_HEIGHT - stonesize) || (y < stonesize)) return; for (int posx=x-stonesize; posx<x+stonesize; posx++) { for (int posy=y-stonesize; posy<y+stonesize; posy++) {  if ((posx-x)*(posx-x) + (posy-y)*(posy-y) < stonesize*stonesize)  {  buf[PIC_WIDTH*posy+posx] += stoneweight;  } } }}// 計算fpsfloat getFps(){#define FPS_COUNT 8 static i = 0; static oldTime = GetTickCount(); static float fps; if (i > FPS_COUNT) { i = 0; int newTime = GetTickCount(); int elapsedTime = newTime - oldTime; fps = FPS_COUNT / (elapsedTime / 1000.0f); oldTime = newTime; } i++; return fps;}// 渲染void RenderFun(){ RenderRipple(); putimage(0, 0, &dest_img); char s[5]; sprintf(s, "%.1f", getFps()); outtextxy(0, 0, s);}// 邏輯void FrameFun() { // 鼠標 if(MouseHit()) { MOUSEMSG msg = GetMouseMsg(); if(msg.uMsg == WM_MOUSEMOVE) {  disturb(msg.x, msg.y, 3, 256); }  else if(msg.uMsg == WM_LBUTTONDOWN) {  disturb(msg.x, msg.y, 3, 2560);   } FlushMouseMsgBuffer(); } // 計算下一幀的波幅 nextFrame();}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
xvideos亚洲人网站| 欧美午夜激情在线| 欧美精品福利在线| 亚洲第一av在线| 色噜噜亚洲精品中文字幕| 日韩高清电影免费观看完整| 亚洲日韩欧美视频| 日韩免费av在线| 亚洲一区二区三区777| 日本精品一区二区三区在线播放视频| 在线观看免费高清视频97| 国产精品美女www| 97在线视频免费播放| 尤物精品国产第一福利三区| 丝袜亚洲欧美日韩综合| 2019亚洲日韩新视频| 98精品国产自产在线观看| 色在人av网站天堂精品| 亚洲国产欧美一区二区三区同亚洲| 亚洲视频免费一区| 国内精品久久久久伊人av| 国产精品三级久久久久久电影| 欧美国产亚洲精品久久久8v| 亚洲男人天堂久| 日韩成人在线免费观看| 欧美在线视频一区二区| 亚洲视频综合网| 亚洲理论片在线观看| 92裸体在线视频网站| 国产精品夫妻激情| 精品国产精品三级精品av网址| 欧美性感美女h网站在线观看免费| 免费av一区二区| 日韩精品视频在线观看免费| 丝袜亚洲另类欧美重口| 欧美国产日韩中文字幕在线| 热99精品里视频精品| 亚洲国产成人久久| 成人网在线观看| 国产精品久久99久久| 亚洲在线一区二区| 欧美性在线视频| 中文字幕一精品亚洲无线一区| 成人在线一区二区| 欧美激情乱人伦| 国产精品成人一区| 精品国产拍在线观看| 国产精品手机播放| 国产成人在线精品| 国产亚洲成精品久久| 国产一区二区三区久久精品| 91在线观看免费| 国产精品青青在线观看爽香蕉| 深夜福利91大全| 欧美在线视频免费| 亚洲精品v天堂中文字幕| 另类图片亚洲另类| 日韩大片在线观看视频| 国产一区二区视频在线观看| 国产欧美精品一区二区三区介绍| 91久久精品国产| 日韩av在线不卡| 成人a免费视频| 亚洲视频网站在线观看| 久久av在线播放| 午夜精品蜜臀一区二区三区免费| 精品福利在线视频| 国产成人精品一区| 日韩电影大全免费观看2023年上| 久青草国产97香蕉在线视频| 欧美多人乱p欧美4p久久| 国产成一区二区| 国产97色在线|日韩| 日韩精品免费视频| 亚洲福利小视频| 国产精品爽爽爽爽爽爽在线观看| 亚洲www在线观看| 国产精品亚洲视频在线观看| 亚洲综合第一页| 亚洲国产精品久久精品怡红院| 日本精品久久久久影院| 亚洲精品久久久久久久久久久久久| 亚洲免费视频一区二区| 91美女片黄在线观看游戏| 8090成年在线看片午夜| 国产欧美精品一区二区三区-老狼| 亚洲精品之草原avav久久| 日韩精品欧美国产精品忘忧草| 日韩av电影在线免费播放| 欧美成在线观看| 欧美日韩亚洲精品一区二区三区| 欧美色欧美亚洲高清在线视频| 亚洲日本中文字幕免费在线不卡| 少妇高潮 亚洲精品| 亚洲久久久久久久久久久| 成人亚洲综合色就1024| 91夜夜揉人人捏人人添红杏| 亚洲精品久久久久中文字幕欢迎你| 国产精品吹潮在线观看| 操人视频在线观看欧美| 欧美做受高潮电影o| 欧美激情精品在线| 亚洲综合中文字幕68页| 全色精品综合影院| 国产精品青青在线观看爽香蕉| 亚洲精品女av网站| 欧美猛少妇色xxxxx| 中文字幕精品视频| 亚洲精品v天堂中文字幕| 欧美成人在线影院| 日本视频久久久| 欧美激情视频在线| 欧美一区亚洲一区| 亚洲精品国偷自产在线99热| 亚洲精品成a人在线观看| 日日骚av一区| 国产亚洲视频在线| 国产精品日韩欧美综合| 精品无人区乱码1区2区3区在线| 欧美人与性动交a欧美精品| 亚洲精品视频免费| 尤物九九久久国产精品的分类| 亚洲欧美中文另类| 国产丝袜一区二区| 一区二区三区视频观看| 91精品久久久久| 国产一区二区三区在线播放免费观看| 久久这里有精品视频| 中文字幕欧美视频在线| 深夜福利日韩在线看| 欧美大肥婆大肥bbbbb| 少妇av一区二区三区| 91久久精品视频| 日韩av在线网站| 高清日韩电视剧大全免费播放在线观看| 亚洲美女黄色片| 亚洲人成电影在线播放| 中文字幕不卡在线视频极品| 91免费视频网站| 日韩视频精品在线| 社区色欧美激情 | 欧美精品videos性欧美| 91亚洲国产成人久久精品网站| 欧美xxxx18性欧美| 国产精品成久久久久三级| 国产成人福利网站| 精品中文字幕在线观看| 国产视频精品xxxx| 国产精欧美一区二区三区| 欧美日韩国产麻豆| 欧美电影在线播放| 亚洲激情视频在线观看| 97国产在线视频| 欧美亚洲第一区| 欧美大尺度激情区在线播放| 欧美福利视频网站| 日韩高清电影免费观看完整| 成人妇女免费播放久久久| 国产精品视频内| 欧美日韩在线视频一区二区| 久久精品电影一区二区| 美女国内精品自产拍在线播放| 久久国产精品网站| 亚洲视频免费一区|