C#模拟MSN窗体抖动的实现代码
程序员文章站
2023-12-18 11:20:10
基于c#实现窗体的抖动是件很有意思的事情,原理并不难,其实是生成随机数,然后改变form的左上角的坐标即可。
这里用的是循环来实现的,其实还可以用timer来控制.
我...
基于c#实现窗体的抖动是件很有意思的事情,原理并不难,其实是生成随机数,然后改变form的左上角的坐标即可。
这里用的是循环来实现的,其实还可以用timer来控制.
我把抖动分成了两种抖动:
1.生成随机数,改变窗体左上角坐标,然后立即把窗体的坐上角坐标还原,继续循环。
2.生成随机数,改变窗体左上角坐标,循环完毕之后,然后立即把窗体的坐上角坐标还原。
主要功能代码如下:
//第一种抖动 private void button1_click(object sender, eventargs e) { int recordx = this.left; //保存原来窗体的左上角的x坐标 int recordy = this.top; //保存原来窗体的左上角的y坐标 random random = new random(); for (int i = 0; i < 100; i++) { int x = random.next(rand); int y = random.next(rand); if (x % 2 == 0) { this.left = this.left + x; } else { this.left = this.left - x; } if (y % 2 == 0) { this.top = this.top + y; } else { this.top = this.top - y; } this.left = recordx; //还原原始窗体的左上角的x坐标 this.top = recordy; //还原原始窗体的左上角的y坐标 } } //第二种抖动 private void button2_click(object sender, eventargs e) { int recordx = this.left; int recordy = this.top; random random = new random(); for (int i = 0; i < 50; i++) { int x = random.next(rand); int y = random.next(rand); if (x % 2 == 0) { this.left = this.left + x; } else { this.left = this.left - x; } if (y % 2 == 0) { this.top = this.top + y; } else { this.top = this.top - y; } system.threading.thread.sleep(1); } this.left = recordx; this.top = recordy; }