一切随心

编程菜园
数据加载中……
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 on 2006-12-20 22:56 农夫三拳 阅读(777) 评论(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 孤单 [未注册用户]

真的是 了不起啊。呵呵应该多想你学习一点..
    回复  引用