怎么通过timer组件 显示下雪效果(求源码)阿

问题描述

如题。小妹苦苦求高人帮助,c#源代码的最好。

解决方案

解决方案二:
从大大富翁抄来的usesWindows,Messages;constSnowNumber=500;//雪点数量-1typeSnowNode=recordPoint:TPoint;//雪点位置Color:Integer;//先前颜色Speed:Integer;//下落速率nMove:Integer;//下落距离Stick:Integer;//'粘连'度end;varSnowNodes:array[0..SnowNumber]ofSnowNode;//雪点数组hTimer:Integer;//'随机风向'时钟句柄CrWind:Integer;//当前风向(-1~1)CrStep:Integer;//当前循环步数(用于限速)ScreenWidth,ScreenHeight:Integer;//屏幕尺寸//取屏幕尺寸->ScreenWidth,ScreenHeightprocedureGetScreenSize;beginScreenWidth:=GetSystemMetrics(SM_CXSCREEN);ScreenHeight:=GetSystemMetrics(SM_CYSCREEN);end;//初始化雪点数组procedureInitSnowNodes;varhScreenDc,J:Integer;beginhScreenDc:=CreateDC('DISPLAY',nil,nil,nil);forJ:=0toSnowNumberdobeginSnowNodes[J].Point.X:=Random(ScreenWidth);SnowNodes[J].Point.Y:=Random(ScreenHeight);SnowNodes[J].Color:=GetPixel(hScreenDc,SnowNodes[J].Point.X,SnowNodes[J].Point.Y);SnowNodes[J].Speed:=Random(5)+1;//几次循环作下落一次(1~5)SnowNodes[J].nMove:=Random(SnowNodes[J].Speed)+1;//每次下落距离(1~5)SnowNodes[J].Stick:=30-Random(SnowNodes[J].Speed);//'粘连'度end;DeleteDC(hScreenDc);end;//'随机风向'时钟procedureTimerProc(hWnd:HWND;uMsg:UINT;idEvent:UINT;dwTime:DWORD);stdcall;beginSetTimer(0,hTimer,(Random(27)+4)*500,@TimerProc);//重设下次风向改变时间if(CrWind<>0)thenCrWind:=0elseCrWind:=Random(3)-1;//修改风向end;//移动雪点procedureMoveSnowNodes;varhScreenDc,I,X,Y:Integer;beginhScreenDc:=CreateDC('DISPLAY',nil,nil,nil);forI:=0toSnowNumberdobegin//控制雪点下降速率if(CrStepmodSnowNodes[I].Speed)<>0thenContinue;//恢复上次被覆盖点ifGetPixel(hScreenDc,SnowNodes[I].Point.X,SnowNodes[I].Point.Y)=$FFFFFFthenSetPixel(hScreenDc,SnowNodes[I].Point.X,SnowNodes[I].Point.Y,SnowNodes[I].Color);//根据风向作随机飘落X:=SnowNodes[I].Point.X+Random(3)-1+CrWind;Y:=SnowNodes[I].Point.Y+SnowNodes[I].nMove;//积雪(停留)效果处理SnowNodes[J].Stickif((CrStepmodSnowNodes[I].Stick)=0)//降低积雪概率..and(GetPixel(hScreenDc,X,Y)<>GetPixel(hScreenDc,X,Y+1))//'边缘'判断and(GetPixel(hScreenDc,X-1,Y)<>GetPixel(hScreenDc,X-1,Y+1))and(GetPixel(hScreenDc,X+1,Y)<>GetPixel(hScreenDc,X+1,Y+1))thenbegin//稍微调整坐标ifGetPixel(hScreenDc,X,Y-1)=GetPixel(hScreenDc,X,Y-2)thenDec(Y)//上边缘elseifGetPixel(hScreenDc,X,Y+1)=GetPixel(hScreenDc,X,Y+2)thenInc(Y);//下边缘Inc(X,CrWind);//画三个点表示雪花SetPixel(hScreenDc,X,Y,$FFFFFF);SetPixel(hScreenDc,X+1,Y+1,$FFFFFF);SetPixel(hScreenDc,X-1,Y+1,$FFFFFF);//重生雪点SnowNodes[I].Point.Y:=Random(10);SnowNodes[I].Point.X:=Random(ScreenWidth);SnowNodes[I].Color:=GetPixel(hScreenDc,SnowNodes[I].Point.X,SnowNodes[I].Point.Y);endelsebeginif(X<0)or(X>ScreenWidth)or(Y>ScreenHeight)then//超出范围则重生雪点beginSnowNodes[I].Point.Y:=Random(10);SnowNodes[I].Point.X:=Random(ScreenWidth);SnowNodes[I].Color:=GetPixel(hScreenDc,SnowNodes[I].Point.X,SnowNodes[I].Point.Y);endelsebegin//保存颜色并绘制雪点SnowNodes[I].Color:=GetPixel(hScreenDc,X,Y);SetPixel(hScreenDc,X,Y,$FFFFFF);//此时保存新雪点位置SnowNodes[I].Point.X:=X;SnowNodes[I].Point.Y:=Y;end;end;end;DeleteDC(hScreenDc);CrStep:=CrStep+1;end;varThreadMsg:TMsg;//标准消息结构体Frequency:Int64;//高性能定时器频率StartCt,EndCt:Int64;//高性能定时器计数ElapsedTime:Extended;//时间间隔beginGetScreenSize;//预置屏幕范围InitSnowNodes;//初始化雪点数组QueryPerformanceFrequency(Frequency);//高性能定时器频率hTimer:=SetTimer(0,0,Random(5)*500,@TimerProc);//安装随机风向定时器RegisterHotKey(0,0,MOD_CONTROL,ORD('L'));//注册退出热键Ctrl+LwhileTRUEdo//消息循环beginQueryPerformanceCounter(StartCt);//执行运算前计数值ifPeekMessage(ThreadMsg,0,0,0,PM_REMOVE)then//取到消息begincaseThreadMsg.messageofWM_TIMER:TimerProc(0,0,0,0);//取到时钟消息说明时间已到WM_HOTKEY:beginKillTimer(0,hTimer);//删除随机风向定时器UnregisterHotKey(0,0);//删除退出热键Ctrl+LInvalidateRect(0,nil,TRUE);//刷新屏幕Break;//跳出消息循环end;WM_DISPLAYCHANGE:beginGetScreenSize;//重新取屏幕范围InitSnowNodes;//初始化雪点数组end;end;end;MoveSnowNodes;//移动雪点QueryPerformanceCounter(EndCt);//执行运算后计数值ElapsedTime:=(EndCt-StartCt)/Frequency;if(ElapsedTime<0.0005)thenSleep(3)//限制循环速度elseif(ElapsedTime<0.0010)thenSleep(2)elseif(ElapsedTime<0.0015)thenSleep(1);end;end.

解决方案三:
贴在dpr中编译成exe,运行就可以了
解决方案四:
sorry,弄错地方了,不好意思当我没说

时间: 2024-10-21 21:58:19

怎么通过timer组件 显示下雪效果(求源码)阿的相关文章

基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)_jquery

内容滑动切换应用非常广,常见的有幻灯片焦点图.画廊切换等.随着WEB前端技术的广泛应用,内容滑动切换效果占据着web页面重要地位,因此本站Helloweba特别给广大前端爱好者安排了浅显易懂的内容滑动切换效果的开发教程. 先给大家展示下效果图,感觉还不错请参数实现代码,具体效果如下所示: 效果展示      源码下载 本次教程分三个部分: 1.使用jQuery开发基本的内容滑动切换效果, 2.支持移动端触控自适应的内容滑动切换效果, 3.封装内容滑动切换效果jQuery插件. 本文讲解第一部分,

jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)_jquery

今天我们继续内容滑动切换效果的第二部分讲解.如今我们的web开发都要适应移动设备,就是说我们的web页面要在移动设备如手机端也能正常访问,所以我将第一部分的基本切换效果做了加强,增加了响应式和触控滑动效果. 效果展示     源码下载 本文是hwSlider-内容滑动切换效果的第二部分,演示DEMO都是基于第一部分内容的基础上的,所以,如果您还没阅读过第一部分的话,请先移步参阅:基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一) 响应式 什么是响应式设计,这里我就不描述了

语言-个人资金管理系统怎么写,求源码参考

问题描述 个人资金管理系统怎么写,求源码参考 资金账户的信息统一放在随机文件中,该随机文件包括的数据项有记录ID,发生日期, 发生事件,发生金额和余额.每发生一笔收支,文件要增加一条记录,并计算一次余额. 实现3个功能:1能创建资金账户文件并添加收入或支出信息记录:2能显示所有记录,得知资金账户的收支流水账: 3能查询最后一条记录,获知账户的最后的余额. 解决方案 难道这又是作业题? 其中用到的知识点: 格式化读/写文件 数据处理与查询 建议你还是自己动手,其实并没有什么难点. 解决方案二: C

jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)_jquery

弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍如何使用jQuery+Ajax+PHP弹出层异步登录的应用. 效果展示        源码下载 HTML 由于本例UI部分使用了Bootstrap,以及使用jQuery插件,因此需要事先载入相关文件,推荐大家使用相关的CDN资源. <link rel="stylesheet" hre

Jquery插件之Fancybox丰富的弹出层效果附源码下载_jquery

Fancybox是一款优秀的jquery插件,它能够展示丰富的弹出层效果.前面我们有文章介绍了facybox弹出层效果,相比facybox,fancybox显得功能更为齐全,它除了可以加载DIV,图片.图片集.Ajax数据,还能加载SWF影片,iframe页面等等. 效果演示     源码下载 fancybox 特点: 可以支持图片.html 文本.flash 动画.iframe 以及 ajax 的支持: 可以自定义播放器的 css 样式: 可以以组的形式进行播放: 如果将鼠标滚动插件(mous

基于JavaScript实现添加到购物车效果附源码下载_javascript技巧

我们有很多种方法实现将商品添加到购物车,通常的做法是点击"添加到购物车"按钮,会跳转到购物车,在购物车里可以点击"结算"按钮进行结算.而今天我给大家介绍一个更友好的解决方案. 查看演示 下载源码 默认情况下,购物车是隐藏不可见的,当用户点击添加到购物车按钮后,商品信息会添加到购物车,购物车会以按钮的形式出现在页面右下角,点击按钮则会展开购物车,显示购物车中的商品信息,同时也可以对购物车中的商品进行删除或者结算等操作.用户也可以暂时关闭购物车继续购物. HTML结构

jQuery实现鼠标滚动图片延迟加载效果附源码下载_jquery

这里延迟加载的意思是,拖动滚动条时,在图片出现在浏览器显示区域后才加载显示.在这之前全部图片都由一张图片代替.节省流量,减轻服务器负担. 请用鼠标或者键盘方向键使页面向下滚动,注意图片的变化.本特效没有使用专门的图片延迟加载插件,只需要一小段jQuery代码就实现了图片延迟加载,使用非常方便.在本文后面附有源码下载. 效果展示       源码下载 用到的加载中的图片: 代码如下: <!DOCTYPE html> <html> <head> <meta chars

基于JS快速实现导航下拉菜单动画效果附源码下载_javascript技巧

这是一个带变形动画特效的下拉导航菜单特效.该导航菜单在菜单项之间切换时,下拉菜单会快速的根据菜单内容的大小来动态变形,显示合适的下拉菜单大小,效果非常棒. 快速的导航下拉菜单动画效果如下所示: 效果演示         源码下载 HTML 该导航菜单的HTML结构如下: <header class="cd-morph-dropdown"> <a href="#0" class="nav-trigger">Open Nav&

JS实现快速的导航下拉菜单动画效果附源码下载_javascript技巧

这是一个带变形动画特效的下拉导航菜单特效.该导航菜单在菜单项之间切换时,下拉菜单会快速的根据菜单内容的大小来动态变形,显示合适的下拉菜单大小,效果非常棒. 查看演示     下载源码 HTML 该导航菜单的HTML结构如下: <header class="cd-morph-dropdown"> <a href="#0" class="nav-trigger">Open Nav<span aria-hidden=&qu