C#模拟MSN窗体抖动
窗体抖动是件很有意思的事情,就让我们看看一起来看看它的原理吧。
其实是生成随机数,然后改变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;
}