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 农夫三拳 阅读(988) 评论(13)  编辑 收藏 网摘 所属分类: 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 | 孤单[未注册用户]
真的是 了不起啊。呵呵应该多想你学习一点..
  回复  引用  查看    
#12楼2009-02-19 00:00 | qinghao      
原来上cnblog的人也不都是专业的,希望不要搞成CSDN那样,成了个娱乐性的东西了.
  回复  引用    
#13楼2009-04-01 15:17 | 爱天乐舞[未注册用户]
我也做过窗体抖动功能,我是用一个Timer控件定时改变窗体位置
也行 可以试试




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 598697




相关文章:

相关链接: