C#模拟MSN窗体抖动的实现代码
基于C#实现窗体的抖动是件很有意思的事情,原理并不难,其实是生成随机数,然后改变Form的左上角的坐标即可。
这里用的是循环来实现的,其实还可以用timer来控制.
我把抖动分成了两种抖动:
1.生成随机数,改变窗体左上角坐标,然后立即把窗体的坐上角坐标还原,继续循环。
2.生成随机数,改变窗体左上角坐标,循环完毕之后,然后立即把窗体的坐上角坐标还原。
主要功能代码如下:
//第一种抖动
privatevoidbutton1_Click(objectsender,EventArgse)
{
intrecordx=this.Left;//保存原来窗体的左上角的x坐标
intrecordy=this.Top;//保存原来窗体的左上角的y坐标
Randomrandom=newRandom();
for(inti=0;i<100;i++)
{
intx=random.Next(rand);
inty=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坐标
}
}
//第二种抖动
privatevoidbutton2_Click(objectsender,EventArgse)
{
intrecordx=this.Left;
intrecordy=this.Top;
Randomrandom=newRandom();
for(inti=0;i<50;i++)
{
intx=random.Next(rand);
inty=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;
}