c#实现窗口抖动

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;
  }

 

作者: Crylan   发布时间: 2010-04-15

作者: porschev   发布时间: 2010-04-15

作者: chenqingwei   发布时间: 2010-04-15

好东西~~

作者: hugang001   发布时间: 2010-04-15

学习!

作者: computerfox   发布时间: 2010-04-15

感谢lz的分享

作者: sciolist   发布时间: 2010-04-15

作者: zhlu880516   发布时间: 2010-04-15

接。。。。。。。。。。

作者: zsuswy   发布时间: 2010-04-15

学习学习----

作者: hepeng154833488   发布时间: 2010-04-15

好东西啊!

作者: siegebaoniu   发布时间: 2010-04-16

好东东

作者: imissyouyw   发布时间: 2010-04-16

很好玩!!!!

作者: swalp   发布时间: 2010-04-16

学习了...

作者: lyvscf   发布时间: 2010-04-16

该回复于2010-04-16 11:42:34被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#14楼 得分:0回复于:2010-04-16 10:48:19

作者: isslkefks5   发布时间: 2010-04-16

不错,但是抖得不好看~

作者: isslkefks6   发布时间: 2010-04-16

这个rand是哪里来的啊?

作者: vpoint2009   发布时间: 2010-04-16

好玩,有波浪式的抖动么

作者: zxzkb   发布时间: 2010-04-16

mark !!

作者: wo65432519   发布时间: 2010-04-16

试验一下,收了啊。。。。。。。。。。

作者: jjcl521   发布时间: 2010-04-17

这的确很好用。我用第一种做我的项目,窗体的抖动,运行很顺利。
不过第二种方法我没有用过,拿去看了

作者: libinlink   发布时间: 2010-04-17

引用 16 楼 zxzkb 的回复:
这个rand是哪里来的啊?

从石缝里蹦出来的!!!
哈哈哈……

作者: Maryneet   发布时间: 2010-04-17

有趣!!

作者: wode123ppt   发布时间: 2010-04-17

引用 21 楼 wode123ppt 的回复:
引用 16 楼 zxzkb 的回复:
这个rand是哪里来的啊?

从石缝里蹦出来的!!!
哈哈哈……



到底哪来的rand

作者: w382120035   发布时间: 2010-04-17

学习!

作者: eldxin7   发布时间: 2010-04-22

楼主发代码前 请确认下。。少定义了个Rand

作者: JustDoIt_NotLast   发布时间: 2010-04-22

学习中

作者: fina1982   发布时间: 2010-04-22

mark

作者: s364021318   发布时间: 2010-04-23

谢谢楼主的分享!

作者: lixiaolian7   发布时间: 2010-04-23

学习学习

作者: Shirely_Jiao   发布时间: 2010-04-23

恩,一般吧,咱这样的帖子都有好多回的,……

学习……

作者: scdn8311   发布时间: 2010-04-27

学习了

作者: hua_nan_she   发布时间: 2010-04-27

enenen

作者: pigHead_chen   发布时间: 2010-04-29

好玩!!

作者: HHQSY   发布时间: 2010-04-29

我看了很多这种抖动代码,我这里还有一种抖动方法,它摒弃了你用随机数产生的抖动不好看的弊端,可以让窗体抖动得很自然!具体代码如下:
C# code

   int i,j,k;               //定义三个变量
 for(i=1;i<=3;i++)          //循环次数
{
for(j=1;j<=10;j++)
{
  this.top+=5;
  this.left+=5;
  System.Threading.Thread.Sleep(5);           //当前线程指定挂起的时间
}
for(k=1;k<=10;k++)
{
  this.top-=5;
  this.left-=5;
  System.Threading.Thread.Sleep(5);
}
}



自觉结贴好习惯!
 

作者: lc_stone   发布时间: 2010-04-29

rand是?

作者: yarkingJ   发布时间: 2010-05-01

先不说好好,请把那个Rand的定义写下才发表,一来就说好,好在那里。

作者: LJ_welcome   发布时间: 2010-05-08

我晕,终于搞懂了,呵呵,我给你加工了一下。。。。嘻嘻····

作者: LJ_welcome   发布时间: 2010-05-08

好东西,帮顶。

作者: LJ_welcome   发布时间: 2010-05-08

private void ShankWindow()
  {
  var currPos = this.Location;
  int i = 0;

  Timer timer = new Timer();
  timer.Interval = 25;
  timer.Tick += (sender, e) =>
  {
  if (i % 2 == 0)
  {
  this.Left += 10;
  this.Top += 10;
  }
  else
  {
  this.Left -= 10;
  this.Top -= 10;
  }

  if (i++ >= 8) //抖动次数
  {
  this.Location = currPos;//重设窗体初始 

  timer.Enabled = false;
  timer.Dispose();
  }
  };

  timer.Enabled = true;
  }

作者: changjin642   发布时间: 2010-05-09

顶了。楼主结贴呀。

作者: omiao   发布时间: 2010-05-26

引用 34 楼 yarkingj 的回复:

我看了很多这种抖动代码,我这里还有一种抖动方法,它摒弃了你用随机数产生的抖动不好看的弊端,可以让窗体抖动得很自然!具体代码如下:
C# code

int i,j,k; //定义三个变量
for(i=1;i<=3;i++) //循环次数
{
for(j=1;j<=10;j++)
{
this.top+=5;
this.left+=……

这个不错~

作者: lishanquan   发布时间: 2010-05-27

哈哈。学习学习。不错~~

作者: Joney_y   发布时间: 2010-05-27

引用 17 楼 wo65432519 的回复:
好玩,有波浪式的抖动么

自己去写坐标啊

作者: caoqinghua   发布时间: 2010-05-28

好东西 Lz分享大家给是一种美德!

作者: wode123ppt   发布时间: 2010-05-28

呵呵 以前做过 也是用的随机数

作者: wwwtre   发布时间: 2010-05-29

不错 ,好东西 !!!

作者: snowkingdom   发布时间: 2010-05-29

学习中,谢谢@

作者: ykaihome   发布时间: 2010-05-29

不错啊,谢谢啦

作者: first_wang2000   发布时间: 2010-05-30

用APi也可以实现

作者: chas824045706   发布时间: 2010-05-30

引用 34 楼 yarkingj 的回复:
我看了很多这种抖动代码,我这里还有一种抖动方法,它摒弃了你用随机数产生的抖动不好看的弊端,可以让窗体抖动得很自然!具体代码如下:

C# code

int i,j,k; //定义三个变量
for(i=1;i<=3;i++) //循环次数
{
for(j=1;j<=10;j++)
{
this.top+=5;
thi……

top-->>Top,lef-->>Left 就OK了

作者: shou55   发布时间: 2010-05-30

呵呵,人才啊~

作者: hummer94555555   发布时间: 2010-05-30

哦。。。多谢了。。

作者: fulminati   发布时间: 2010-05-30

功能挺容易实现的,学习下,今天第一天报到

作者: unbaba   发布时间: 2010-05-31

进来学习下

作者: csdsuper   发布时间: 2010-06-01

学习了!!

作者: dahai33   发布时间: 2010-06-09

学习。。。。

作者: t20100504t   发布时间: 2010-06-10

还是不知道rand是啥 谁能说明下

作者: blogtjf   发布时间: 2010-06-10

友情up

作者: Swear_Max   发布时间: 2010-06-11

很好玩,学习

作者: hfCoder   发布时间: 2010-06-11

帮 顶

作者: wl500001   发布时间: 2010-06-11

帮 顶

作者: hfCoder   发布时间: 2010-06-11

学习啦。顶

作者: cjyh0004   发布时间: 2010-06-11

c#.net WEB抖动窗体
function drop()3
{
for(j = 8; j > 0; j--){
self.moveBy(0,j);
self.moveBy(j,0);
self.moveBy(0,-j);
self.moveBy(-j,0);
}
}
onLoad="drop()"

作者: Vampire_ycq   发布时间: 2010-06-17

dingdingding

作者: wang2129929   发布时间: 2010-06-17

真不用这么麻烦。。。。还用啥随即数呀

作者: wxd024   发布时间: 2010-06-17

学习了,正需要,刚才找了个抖动源码,写的好复杂http://www.51zcm.com/thread-187-1-1.html 
看都看不懂呵呵,还是LZ的方便啊

作者: wzp144650   发布时间: 2010-06-17