C#模拟MSN窗体抖动[原创]

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

Demo下载

posted @ 2006-12-20 22:56 农夫三拳 阅读(815) 评论(11)  编辑 收藏 所属分类: C#

  回复  引用  查看    
#1楼 2006-12-21 16:43 | 老Q      
当窗口最大化的时候并不能抖动
但是msn的可以哦
  回复  引用  查看    
#2楼 2006-12-21 17:11 | 航天奇侠      

第二种没见过。

还有,以后压缩请用zip格式,通用性要高点。

  回复  引用  查看    
#3楼 2006-12-21 23:17 | 利比亚      
不错。

羡慕xia

我还不会打包呢。。
汗。

得多在cnblogs学习啊 啊
  回复  引用  查看    
#4楼 [楼主]2006-12-22 09:06 | 农夫三拳      
@老Q
这我倒没注意,呵呵,最大化的时候窃以为是先减小左上角坐标再增大的。
  回复  引用  查看    
#5楼 [楼主]2006-12-22 09:07 | 农夫三拳      
@利比亚
一起学习~~
  回复  引用  查看    
#6楼 [楼主]2006-12-22 09:07 | 农夫三拳      
@航天奇侠
以后注意,嘿嘿~
  回复  引用    
#7楼 2007-08-31 11:09 | jingang [未注册用户]
呵呵!,觉得有意思,不过代码我还是有些不理解,楼主能不能给我源码啊,
谢啦撤!!@
  回复  引用  查看    
#8楼 [楼主]2007-09-03 02:07 | 农夫三拳      
@jingang
代码没了呀,只有你去反编译我的demo了,寒- -
  回复  引用    
#9楼 2008-01-11 13:49 | 麒麟 [未注册用户]
在源代码进行调试的时候
int x = random.Next(rand);
int y = random.Next(rand);
其中的rand是未被声明的变量!

  回复  引用  查看    
#10楼 [楼主]2008-01-12 00:36 | 农夫三拳      
@麒麟
我给的只是片段代码
rand是个常量,我设的是5

  回复  引用    
#11楼 2008-05-19 12:39 | 孤单 [未注册用户]
真的是 了不起啊。呵呵应该多想你学习一点..

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: