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

  • 相关阅读:
    App调试的几个命令实践【转】
    解决sdk更新时候报错 http://dl-ssl.google.com/android上不去,链接拒绝
    fastjson序列化排序问题
    Java中的四种引用
    equal&==&hashcode
    ThreadPool线程池的关注点
    JVM的本地方法栈
    JVM的堆分配
    JVM的类装载子系统
    JVM的数据类型
  • 原文地址:https://www.cnblogs.com/gc2013/p/3719339.html
Copyright © 2020-2023  润新知