窗口抖动源码
Javascript特效代码大全

1.oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键<table borderoncontextmenu=return(false)><td>no</table> 可用于Table 2. <body onselectstart="return false"> 取消选取、防止复制 3. onpaste="return false" 不准粘贴 4. oncopy="return false;" oncut="return false;" 防止复制 5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标 6. <link rel="Bookmark"href="favicon.ico"> 可以在收藏夹中显示出你的图标7. <input style="ime-mode:-Disabled"> 关闭输入法8. 永远都会带着框架<script language="javascript"><!-- if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页// --></script> 9. 防止被人frame <SCRIPT LANGUAGE=javascript><!-- if (top.location != self.location)top.location=self.location; // --></SCRIPT> 10.网页将不能被另存为<noscript><iframe src="/*.html>";</iframe></noscript> 11. <input type=button value=查看网页源代码onclick="window.location = `view-source:`+ /`";> 12.删除时确认<a href="/`javascript:if"(confirm("确实要删除吗?"location="boos.asp?&areyou=删除&page=1"`>删除</a> 13. 取得控件的绝对位置//javascript <script language="javascript"> function getIE(E){ var t=e.offsetTop; var l=e.offsetLeft; while(e=e.offsetParent){ t+=e.offsetTop; l+=e.offsetLeft; } alert("top="+t+"/nleft="+l); } </script> //VBScript <script language="VBScript"><!-- function getIE() dim t,l,a,b set a=document.all.img1 t=document.all.img1.offsetTop l=document.all.img1.offsetLeft whilea.tagName<>"BODY" set a = a.offsetParent t=t+a.offsetTop l=l+a.offsetLeft wend msgbox"top="&t&chr(13)&"left="&l,64,"得到控件的位置" en捎每誤`代替;height=100 窗口高度;width=400 窗口宽度;top=0 窗口距离屏幕上方的象素值;left=0 窗口距离屏幕左侧的象素值;toolbar=no 是否显示工具栏,yes为显示;menubar,scrollbars 表示菜单栏和滚动栏。
js实现抖动效果的简单方式

js实现抖动效果的简单方式抖动效果是一种让元素在页面上产生震动的动画效果,给用户带来一种互动和活泼的视觉感受。
在JavaScript中,我们可以通过一些简单的方式实现这种效果。
本文将为您介绍一种简单的实现方式,并提供操作指南,让您可以轻松地在自己的网页中添加抖动效果。
要实现抖动效果,我们首先需要使用CSS来控制元素的样式。
我们可以使用transform属性中的rotate、translate、scale等方法来改变元素的位置、旋转和缩放。
在这种情况下,我们将使用translate 来改变元素的位置,以模拟抖动效果。
首先,让我们创建一个简单的HTML页面,包含一个按钮元素,当点击按钮时,元素将产生抖动效果。
```html<!DOCTYPE html><html><head><style>.shake-animation {position: relative;animation: shake 0.5s;}@keyframes shake {0% { transform: translate(0, 0); }25% { transform: translate(-5px, 0); }50% { transform: translate(5px, 0); }75% { transform: translate(-5px, 0); }100% { transform: translate(0, 0); }}</style></head><body><button class="shake-animation"onclick="shakeElement()">点击我抖动</button><script>function shakeElement() {const element = document.querySelector('.shake-animation');element.classList.add('shake');setTimeout(() => {element.classList.remove('shake');}, 500);}</script></body></html>```在上面的代码中,我们定义了一个叫做`shake-animation`的CSS 类,用来给元素添加抖动效果。
嵌入窗口例程[易语言源码]
![嵌入窗口例程[易语言源码]](https://img.taocdn.com/s3/m/438d43660166f5335a8102d276a20029bd6463cf.png)
嵌入窗口例程[易语言源码]
以下是一个简单的易语言源码示例,用于创建一个窗口并在窗口中嵌入一个控件:
plaintext.
程序运行窗口。
窗口 = 新建窗口("嵌入窗口例程", 100, 100, 400, 300)。
控件 = 新建图片框(20, 20, 200, 200, 窗口.句柄)。
控件.图片 = "C:\example.jpg"
窗口.显示()。
窗口.消息循环()。
结束。
在这个例程中,首先创建了一个窗口对象,然后在窗口中创建了一个图片框控件,并指定了控件的位置和大小。
接着将图片框控件嵌入到窗口中,并设置了图片的路径。
最后显示窗口并启动消息循环以响应用户操作。
这个例程演示了如何在易语言中创建一个窗口并在窗口中嵌入一个控件,你可以根据自己的需求进行进一步的扩展和修改。
动态窗口法算法原理说明

动态窗口法算法原理说明什么是动态窗口法算法原理?动态窗口法算法原理是一种针对海量数据处理的方法,通过设置一个固定大小的窗口,在数据流中滑动窗口并不断更新窗口内的状态,以快速计算特定问题的解。
动态窗口法算法可以大幅减少计算量,提高效率,并且不需要事先对整个数据集进行遍历。
动态窗口法算法的使用场景动态窗口法算法广泛应用于实时数据处理、流式数据分析、滑动窗口查询等场景,例如处理实时交易数据、网络流量分析、时间序列分析等。
这些场景中的数据通常是连续不断产生的,传统的遍历或聚合方法在效率和实时性上无法满足要求,而动态窗口法算法恰能满足这一需求。
动态窗口法算法步骤详解下面我们将详细介绍动态窗口法算法的步骤,分为初始化阶段和滑动更新阶段两部分。
1. 初始化阶段在初始化阶段,我们需要确定窗口的大小、定义窗口内的状态以及初始化状态的值。
窗口的大小根据具体问题来设定,可以是固定大小也可以是根据数据特征动态调整。
2. 滑动更新阶段在滑动更新阶段,我们按照窗口大小依次处理数据流中的元素。
具体步骤如下:2.1 更新状态从数据流中取出一个新的元素,并更新窗口内的状态。
状态的更新根据具体问题而定,可以是计算平均值、求和、统计频次等。
2.2 检查窗口范围检查当前窗口的范围是否超过设定的大小。
如果超过,需要对窗口内的状态进行调整,保持窗口的大小不变,并去除掉窗口最旧的元素。
2.3 处理结果根据窗口内的状态计算所需的结果。
这个结果可以是每次窗口滑动时的统计信息,也可以是在滑动过程中得到的特定结果,如最大值、最小值等。
以上就是动态窗口法算法的基本步骤。
通过不断滑动窗口并更新内部状态,我们可以及时获得问题的结果,避免了对整个数据集的遍历或聚合操作,从而提高了计算效率。
动态窗口法算法的优缺点动态窗口法算法具有以下优点:1. 高效性:由于只需要维护窗口内的状态,可以大幅减少计算量,提高处理效率。
2. 实时性:能够及时处理实时数据流,实现实时计算和分析。
c语言弹跳小球代码

c语言弹跳小球代码C语言是一门广泛应用于编程领域的编程语言,具有高效、灵活、易学易用等特点。
在很多编程领域中,C语言都具有很重要的应用价值。
比如在游戏编程领域中,我们可以通过C语言代码实现很多有趣的游戏特效,比如让一个小球跳动起来,给人们带来很有趣的视觉效果。
下面我们就来一起看看如何通过C语言实现一个弹跳小球的代码。
第一步,先定义游戏中需要用到的参数,比如窗口的高度和宽度等。
这里我们假设窗口的高度为600,宽度为800。
```#define WIDTH 800#define HEIGHT 600```第二步,定义窗口的风格。
这里我们使用win32api,并定义窗口的风格为WS_POPUP```HWND hwnd;WNDCLASSEX wc;HINSTANCE hInstance;wc.cbSize = sizeof(WNDCLASSEX);wc.style = CS_VREDRAW | CS_HREDRAW;wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.hCursor = LoadCursor(NULL, IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszClassName = L"MainWndClass";RegisterClassEx(&wc);hwnd = CreateWindowEx(0,L"MainWndClass",L"弹跳小球",WS_POPUP,0, 0,WIDTH, HEIGHT,NULL,NULL,hInstance,NULL);```第三步,创建一个圆形小球,将其位置定于窗口的正中央,并且设定小球的初始速度为10(设置初始速度非常重要,因为它决定了小球弹跳的高度)。
VC窗口闪烁问题的解决

一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁。
先来谈谈闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期。
一般显卡的刷新周期是1/80秒左右,具体数字可以自己设置的。
这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么给人的视觉感受就是,先看到只有背景色的图像,然后看到画上内容的图像,这样就会感觉闪烁了。
解决方法:尽量快的输出图像,使输出在一个刷新周期内完成,如果输出内容很多比较慢,那么采用内存缓冲的方法,先把要输出的内容在内存准备好,然后一次输出到显存。
要知道一次API 调用一般可以在一个刷新周期内完成。
对于GDI,用创建内存DC的方法就可以了原因二:复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。
我们知道父窗口上被子窗口挡住的部分其实没必要重画的解决方法:给窗口加个风格WS_CLIPCHILDREN ,这样父窗口上被子窗口挡住的部分就不会重画了。
如果同级窗口之间有重叠,那么需要再加上WS_CLIPSIBLINGS 风格原因三:有时候需要在窗口上使用一些控件,比如IE,当你的窗口改变大小的时候IE会闪烁,即使你有了WS_CLIPCHILDREN也没用。
原因在于窗口的类风格有CS_HREDRAW 或者CS_VREDRAW,这两个风格表示窗口在宽度或者高度变化的时候重画,但是这样就会引起IE闪烁解决方法:注册窗口类的时候不要使用这两个风格,如果窗口需要在改变大小的时候重画,那么可以在WM_SIZE的时候调用RedrawWindow。
原因四:界面上窗口很多,而且改变大小时很多窗口都要移动和改变大小,如果使用MoveWindow 或者SetWindowPos两个API来改变窗口的大小和位置,由于他们是等待窗口重画完成后才返回,所以过程很慢,这样视觉效果就可能会闪烁。
iperf-1.7.0 源代码分析

Iperf 源代码分析(一)概述前段时间学习Linux网络编程的有关知识,希望看一看这些网络编程的技术在实际的代码中是如何运用的。
正巧实验室的项目中使用了开源网络性能测试软件Iperf,于是便初步分析了Iperf的源代码。
现将分析代码的点滴收获写在我的Blog上,希望各位高人多多指教。
Iperf 是美国伊利诺斯大学(University of Illinois)开发的一种网络性能测试工具。
可以用来测试网络节点间TCP或UDP连接的性能,包括带宽、延时抖动(jitter,适用于UDP)以及误码率(适用于UDP)等。
关于Iperf的下载、安装以及详细的使用方法,可以参照/Projects/Iperf/Iperf是按照Server-Client范型工作的。
在连接的一端使用以下命令启动Server:iperf -s在连接的另一端启动Client:iperf -c 1.1.1.1此处假设Server端的IP地址为1.1.1.1。
经过一段测试时间(默认为10秒),在Server端和Client端就会打印出网络连接的各种性能参数。
Iperf作为一种功能完备的测试工具,还提供了各种选项,例如是建立TCP连接还是UDP 连接、测试时间、测试应传输的字节总数、测试模式等。
而测试模式又分为单向测试(Normal T est)、同时双向测试(Dual T est)和交替双向测试(Tradeoff T est)。
此外,用户可以指定测试的线程数。
这些线程各自独立的完成测试,并可报告各自的以及汇总的统计数据。
对于Iperf的详细使用方法以及命令行参数的意义,请参照上面的网页。
Iperf是用C++语言实现的,对设计中的各种结构和功能单元都按照面向对象的思想进行建模。
它主要用到了Unix系统编程中两个主要的部分:Socket 网络编程和多线程编程。
因此,通过分析Iperf的源代码,我们就可以在实际的例子中学习面向对象编程,Socket网络编程以及多线程编程的技术。
Javascript特效代码大全(420个)

Javascript特效代码大全(420个)Javascript 特效代码├Cookie脚本├随访问次数变提示├集成Cookies ├使窗口仅弹出一次├签名提示程序├记录上次登录时间├自由控制打开窗口├记录页面修改时间├检测IE去过站点├离开时显示信息├弹出窗口自动关闭├离开页面弹出窗口├进入时显示信息├离开启动收藏夹├链接确认按钮├点击加入收藏夹├记录页面更新时间├页面载入等待├打开硬盘驱动器├设置默认首页├输入框测试警告├链接弹出警告框├关闭窗口链接├显示器分辨率检测├按分辨率导航├定制打开的窗口├控制窗口打开日期├打开窗口居中├输入框控制├查看输入框内容├显示所有链接├限时载入页面├输入框神秘消失├检测访问来源├回退的页面数├危险的链接├倒计时载入页面├自由打开窗口├检测IE所装插件├检测点链接速度├检测健康程度?├页面中打开窗口├特殊的Bookmark ├窗口打开关闭程序├随机显示一些数字├页面自动打开├进入弹出收藏夹├自动显示是否更新├浏览器详细报告├页面背景类├背景向下移动├背景不停变换色彩├使页面产生百叶窗├颜色代码英文集├自已选择背景颜色├背景颜色安全测试├颜色选择器├背景图片居中├页面转换特效├礼花背景├链接驱动背景色├手动调节背景色├鼠标使链接变色├跟随鼠标旋转背景├背景调色板├RGB颜色转换├按钮驱动背景├颜色选择器├精彩的变色文字├颜色选择器├闪烁的霓虹灯├星星从背景中飞出├背景向下移动(二) ├动态选择背景色├下雨├按钮驱动背景变化├按钮使背景闪烁├背景随机显示├背景快速闪烁├自己选择背景图片├文本特效类├随机信息显示├随机文本链接├所有链接不停变色├鼠标经过文字变色├随日期变换文本├文字颜色渐变脚本├文本自动输出├文字特效├文字不停变色├字符连续消隐├公告栏├文字动态变化├字符飞舞├文字特殊显示├文字从旁边出现├文本从右向左输出├消息显示器├随机跳出信息窗口├随机产生乱码├输入框各种效果├文字从左到右出现├信息逐条出现├选择显示文字方式├文字来回反弹├文字逐个出现├电子管显示├文字循环出现├可调节速度的撞击├逐字出现的信息条├自由控制文字输入├一段彩色的文字├可调节的输出形式├文字同时输出├调节文字移动形式├文字飘动输出├各种形式文字输出├文字逐个闪烁├文字上下跳动├文字变色逐个出现├点击改变文字├文字段任意移动├文字连续闪烁├点击出现链接├状态栏条├链接在右面打开├文字胡乱跳动├文字段到处飞舞├按钮驱动文字渐变├文字向左移动├文字弯曲变形├双重输入文字├综合字符集├文字从小变大├导航菜单类├树形菜单(一) ├树形菜单(二) ├树形菜单(三) ├页面搜索类├站内搜索脚本(一) ├站内搜索脚本(二) ├站内搜索脚本(三) ├站内搜索脚本(四) ├站内搜索脚本(五) ├站内搜索脚本(六) ├内部搜索脚本├时间日期类├任意位置显示时钟├倒计时代码生成器├八种风格时间显示├显示登陆时间├日历生成器├退出显示访问时间├一款特酷的时钟├全中文日期显示├纯JavaScript时钟├距离某天时间├显示特殊节日脚本├时钟加在背景上├Form 中的时钟├带开关的Form时钟├距离某日时间├记录几天后的日期├Form栏特全时钟├全球时间表├随时间变化提示├特酷的倒影时钟├特酷的日期显示├2000年日历├时间日期转换├时间跳动器├自己创建日历├生日提醒器├计算任一天星期几├离开某一天日期├按钮上的时间├Form中时间显示├检测星期几并导航├最近的星期天├全日制时钟├用图片显示日期├详细计算你的年龄├时间按钮提醒├计算出生时间├页面完成时间├页面导航类├显示站点信息导航├任意显示导航信息├动态导航脚本├下拉式导航菜单├静止导航菜单├静止图片脚本├文本静止不动├信息框显示链接├友情链接导航框├目录式导航菜单├重要信息说明脚本├滚动链接导航├图片代替按钮脚本├打开窗口等待├静态导航菜单├层叠式导航菜单├隐现导航脚本├页面内部导航├图片代替按钮脚本├打开窗口等待├滚动的超级链接├先后点击链接├按钮选择导航├不停变化的导航├随机的导航├链接窗口说明├同时打开多个链接├打开链接显示信息├又一动态导航脚本├Form框中导航├屏幕翻滚导航├带说明的导航├任意多友情链接├链接自动说明脚本├开始选择导航├链接处出现图标├导航菜单选择├按钮特效类├跑马灯式链接说明├窗口打开关闭├浮动的链接说明├链接处变换色彩├变换链接色和底色├按顺序点击链接├查看源代码按钮├前进后退按钮├按钮定制打开窗口├按钮打开全屏窗口├自由打开各种窗口├按钮回到默认首页├各种用途的按钮├频道方式打开窗口├按钮特殊效果├浏览器全屏显示├死机程序├跳出说明窗口├关不掉的跳出框├循环的警告框├检测页面来源├屏幕抖动脚本├页面被冻结├代码生成类├动态按钮代码生成├浏览器检测生成器├BrowserCheck脚本├彩色文字生成器├分割Frame的代码├主页制作器├综合类├加密页面源代码├访问时间限制├给页面加“热键” ├浏览器毁灭者├文本中首字母大写├查看某网址源代码├文本中首字母大写├综合的搜索引擎├搜索引擎登记├下载记时器脚本├随机播放背景音乐├随日期播放音乐├E-mail表单递交├Jsp容错脚本├计算器(一) ├计算器(二) ├计算器(三) ├网页调用另外网页├FTP页面登录├根据浏览器用CSS ├输入框的新属性├数字排序├发信(一) ├发信(二) ├发信(三)├发信(四) ├发信(五) ├发信(六) ├E-mail递交├元素周期表├显示人口数量├计算平面两点距离├页面自动刷新├又一个容错脚本表├打开多个搜索引擎├可选择的页面信息├直接页面显示器├MIDI音乐选择├页面特效类├字符从空中掉下来├打字机式输出文字├滚动显示的LOGO ├文本自动滚屏├控制别人输入字数├文本上下弹跳├特酷消隐字体├文本框栏目介绍├旋转变换文字├特酷的文本输出├页面自动滚屏效果├炽热的文字特效├鼠标响应文字变色├隐藏显示字符脚本├鼠标响应图片变化├星星满天闪烁├打开页面颜色渐变├页面打开特效├英文名字变日文├页面上下滚动├页面缩小特效├页面左右分开├特殊的HTML字符├图片满天飞舞├页面掉下去├页面向右滚屏├综合页面特效├图形图象类├禁止图片下载├图片隐现效果├随机显示图片├图片变形扭曲├雪景├图片渐渐出现├相片选择器├图形循环渐显├图形左右晃动├图形选择脚本├图片翻滚导航├图片定期消失├自由控制图片下载├自由设定图片大小├图片响应鼠标变换├图片自由运动├图片大小变换├图片随意移动├自动显示图片属性├图片循环显现├图片变化效果├随机显示banner ├鼠标驱动图片变化├图片不停闪烁├鼠标事件类├图片跟随鼠标├鼠标响应新页面├禁用鼠标左右键├鼠标控制窗口开关├鼠标点击效果├禁用右键自动导航├鼠标激活警告框├鼠标跟踪器├右键自动链接页面├跟随鼠标的星星├右键打开收藏夹├字符围绕鼠标├各种形状的鼠标├跟随鼠标的字符├非图片鼠标跟踪器├显示链接特征├改变链接属性├显示鼠标坐标├随鼠标的彩色字符├状态栏特效├状态栏跑马灯脚本├文字从右弹出├文字从左依次弹出├文字从右到左移动├文字快速依次弹出├文字组合弹出├文字不停闪烁├状态栏显示链接├title显示日期├文字来回出现├状态栏固定信息├状态栏特殊显示├虚拟格式化硬盘├状态栏显示输入├title显示时间├病毒入侵演示├文字从前后出现├文字慢慢出现├状态栏特殊效果├文字从中间出现├文字分解出现├输入字符在状态栏├文字多处出现├Title特效├调节文字显示速度├状态栏标准时钟├密码类├控制他人进入页面├用来实现会员制度├密码保护相应页面├自己编制密码表├密码保护页面(一)├游戏类├一款流行游戏├双人小游戏├动脑小游戏├模拟跳舞游戏├测试点击速度├模拟太空飞行├一个输赢游戏├测试打字速度├测试心算能力├选择路线游戏├射击小游戏├字符在FORM中坠落├堆积游戏├21点游戏├猜数的大小├找相同的图片├在线测试类├在线考试脚本(一) ├在线考试脚本(二) ├在线考试脚本(三) ├在线考试脚本(四) ├在线考试脚本(五) ├在线考试脚本(六) ├测试警告├技巧类├两个脚本同时调用├加快图片显示├页面自动刷新├模拟跳舞游戏├光标选择输入框├更方便的单选框├输入框无法输入├HTML加入jsp ├自动跳出Frame ├禁止页面加入缓存├制作分析统计器├密码输入框的问题├屏蔽HTML(说明) ├输入框特殊效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
窗口抖动源码
这次让喜欢COPY源码的童鞋过过瘾….
分享一个刚写的窗口抖动源码,从决定开始写到基本完工贴出来用了六个小时左右.还算比较快了.一开始的思路错了,推翻了很多代码.后来慢慢成型了….希望各位可以从中学取知识….代码有什么可以改进的地方也欢迎提出来. 技术源于分享,分享沟通你我
Imports System.Threading
Public Class clsShakeWindow
‘转载请保留以下信息
‘—————————————————————
‘窗口抖动代码,采用独立线程,可同时处理多个窗体抖动互不影响
‘可调节抖动幅度,速度,次数
‘作者SC,个人博客
‘—————————————————————
Protected WithEvents tmrShack As New Timers.Timer ‘用于执行抖动的Timer
‘描述每次抖动位置偏移的数组
Public arrPos() As Point = {New Point(0, -5), New Point(-5, -5), New Point(-5, 0), New Point(-5, 5), New Point(0, 5), New Point(5, 5), New Point(5, 0), New Point(5, -5), New Point(0, -5), New Point(0, 0)} Protected _ShakeLevelFactor As Single = 1 ‘抖动偏移量因子,用于调整抖动幅度
Protected ShakeTimes As Int32 = 3 ‘抖动次数
Protec ted _proShakeSpeed As Int32 = 10 ‘每次修改偏移的时间间隔”’ <summary>
”’ 获取或设置每次修改偏移的时间间隔
”’ </summary>
”’ <value></value>
”’ <returns></returns>
”’ <remarks></remarks>
Protected Property proShakeSpeed() As Int32
Get
Return _proShakeSpeed
End Get
Set(ByVal value As Int32)
_proShakeSpeed = value
tmrShack.Interval = value
End Set
End Property
”’ <summary>
”’ 获取或设置抖动次数
”’ </summary>
”’ <remarks></remarks>
Protected Property proShakeTimes() As Int32
Get
Return ShakeTimes
End Get
Set(ByVal value As Int32)
ShakeTimes = value
End Set
End Property
Protected dicShakeStepAndInitialPos As New Dictionary(Of Form, ShakeWnd) ‘抖动窗口队列字典,包含所有处于抖动周期中的窗口信息
Protected Delegate Sub dlgShake(ByVal Wnd As Form, ShakeStep As ShakeWnd) ‘定义执行抖动时额委托
Dim mydlgShake As New dlgShake(AddressOf SafeShake) ‘实例化委托”’ <summary>
”’ 处于抖动周期中的窗口信息类
”’ </summa ry>
”’ <remarks></remarks>
Protected Class ShakeWnd
Public ShakeStep As Int32 = 0
Public InitialPos As New Point(0, 0)
Public Sub New(CurrentPos As Point)
InitialPos = CurrentPos
End Sub
End Class
”’ <summary>
”’ 实例化抖动窗口类
”’ </summary>
”’ <param name=”ShakeLevelFactor”>抖动幅度因子,默认为1.该值决定抖动的幅度大小</param>
”’ <param name=”ShakeSpeed”>抖动速度,每次位置偏移的时间间隔,单位为毫秒</param>
”’ <param name=”ShakeTimes”>抖动次数,执行抖动周期的次数,默认为4</param>
”’ <remarks></remarks>
Public Sub New(Optional ByVal ShakeSpeed As Int32 = 10, Optional ByVal ShakeTimes As Int32 = 3, Optional ByVal ShakeLevelFactor As Int32 = 1) tmrShack.Enabled = False
proShakeSpeed = ShakeSpeed
proShakeTimes = ShakeTimes
_ShakeLevelFactor = ShakeLevelFactor
End Sub
”’ <summary>
”’ 抖动一个窗体
”’ </summary>
”’ <param name=”Window”>要抖动的窗口</param>
”’ <remarks></remarks>
Public Sub ShakeWindow(ByVal Window As Form)
dicShakeStepAndInitialPos.Add(Window, New
ShakeWnd(Window.Location))
tmrShack.Enabled = True
End Sub
‘执行抖动的委托函数
Protected Sub SafeShake(ByVal Wnd As Form, ShakeWndInfo As ShakeWnd) Dim tempPt As Point
tempPt = arrPos(IIf(ShakeWndInfo.ShakeStep > (arrPos.Length –1), ShakeWndInfo.ShakeStep Mod (arrPos.Length),
ShakeWndInfo.ShakeStep))
tempPt.X *= _ShakeLevelFactor : tempPt.Y *= _ShakeLevelFactor tempPt = Point.Add(ShakeWndInfo.InitialPos, tempPt)
Wnd.Location = Point.Round(New Point(tempPt.X, tempPt.Y))
ShakeWndInfo.ShakeStep += 1
End Sub
‘处理抖动队列的定时器
Private Sub tmrShack_Elapsed(sender As Object, e As
System.Timers.ElapsedEventArgs) Handles tmrShack.Elapsed
Try
If dicShakeStepAndInitialPos.Count = 0 Then
tmrShack.Enabled = False
For Each d In dicShakeStepAndInitialPos
If d.Value.ShakeStep = arrPos.Length * ShakeTimes Then dicShakeStepAndInitialPos.Remove(d.Key)
Else
d.Key.Invoke(mydlgShake, {d.Key, d.Value})
End If
Next
Catch ex As Exception
If ex.Message <> “集合已修改;可能无法执行枚举操作。
” Then MsgBox(ex.Message)
End If
End Try
End Sub
End Class。