標籤:style blog java tar ext c
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;
}