QQ的抖动窗口时如何制作的  我想制作一个类似那样的抖动窗体 当点击一个按钮的时候让其本窗体的位置移动
   但是又该如何提取当前坐标 可以拿timer来控制抖动时间  但是如何改变当前窗体的位置聂

解决方案 »

  1.   

    this.Location 窗口当前位置
    SetwindowPos 改变窗口位置
    WINDOWPLACEMENT 这个结构可以得到最大化最小化之前的位置
      

  2.   

            private void btnshake_Click(object sender, EventArgs e)//按下btnshake按钮的时候
            {
                int recordx = this.Left; //指定窗体左边值
                int recordy = this.Top;  //指定窗体上边值            for (int i = 0; i < 10; i++) //设定循环次数为20 且加1
                {                if (i % 2 == 0)  //如果i 能给2整除
                    { 
                        this.Left=this.Left + 10; //窗体左边值加10
                    }
                    else  //否则
                    {
                        this.Left = this.Left - 10;//窗体左边边值减10
                    }
                    if (i % 2 == 0)//如果i能给2整除
                    {
                        this.Top = this.Top +10;//窗体上边值加10
                    }
                    else//否则
                    {
                        this.Top = this.Top - 10;//窗体上边值减10
                    }
                    System.Threading.Thread.Sleep(30);//震动频率
                }
                this.Left = recordx;//重设窗体初此左边值
                this.Top = recordy; //重设窗体初此上边值
                rtbget.Text = "您发送了一个窗口抖动。" + System.Environment.NewLine;//提示发了震动并且换行        }
      

  3.   


     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim st As New Point
            Dim st1 As New Point
            Dim st2 As New Point
            st = Me.Location
            st1 = New Point(st.X + 2, st.Y + 2)
            st2 = New Point(st.X - 2, st.Y - 2)
            Dim i As Integer = 0
            While i <= 4
                Me.Location = st1
                System.Threading.Thread.Sleep(60)
                Me.Location = st2
                System.Threading.Thread.Sleep(60)
                i = i + 1
            End While
            Me.Location = st
        End Sub