C#模拟MSN窗体抖动的实现代码

基于C#实现窗体的抖动是件很有意思的事情,原理并不难,其实是生成随机数,然后改变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;
}
(0)

相关推荐

  • C#定时关闭窗体实例

    本文实例讲述了C#定时关闭窗体的方法,分享给大家供大家参考.具体方法如下: 复制代码 代码如下: public partial class Form2 : Form  {  private System.Timers.Timer timer = new System.Timers.Timer(); public Form2()  {      InitializeComponent();      InitStatus();      timer.Interval = 4000;      ti

  • C#设置MDI子窗体只能弹出一个的方法

    Windows程序设计中的MDI(Multiple Document Interface)官方解释就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序. 新建一个WindowForm程序.得到一个窗体作为我们父窗体Parent.拖入一个menustrip空间.在新建一个窗体FrmCh

  • C# WinForm窗体编程中处理数字的正确操作方法

    使用C#进行WinForm开发时,经常需要从WinForm窗体中获取用户输入数据.如果是字符串,那很好办,直接使用"控件名.Text"即可.但如果是数字类型的值呢?怎么样获取?怎么样判断?怎么样转换?怎么样错误提示?且看下文. 假如我要从WinForm界面上获取一个用户输入的数字,代码如下: 复制代码 代码如下: int num; //定义一个int类型的变量来接收值 //假设接收用户输入的文本框控件名称为"txtNum",txtNum.Text为字符串类型. //

  • C#实现随鼠标移动窗体实例

    本文实例讲述了c#实现随鼠标移动窗体的方法,分享给大家供大家参考. 具体实现方法如下: private void MainForm_Load(object sender, EventArgs e) { //绑定事件 MouseMove += Form_MouseMove; MouseDown += Form_MouseDown; } private Point _mousePoint; private void Form_MouseMove(object sender, MouseEventAr

  • C#中使用IrisSkin2.dll美化WinForm程序界面的方法

    一.添加控件IrisSkin2.dll.方法:        1.右键"工具箱"."添加选项卡",取名"皮肤".        2.右键"皮肤","选择项"弹出对话框        3.点击"浏览",找到IrisSkin2.dll,,next,next,确定.        4.在皮肤里会出现.        5.把SkinEngine拖到设计界面,会出现在下面. 二,把皮肤文件中以ss

  • C#中载入界面的常用方法

    本文实例讲述了C#中载入界面的常用方法.分享给大家供大家参考.具体方法分析如下: 方法1.采用事件委托的方法  对象:主窗体:FrmMain 加载窗体:FrmLoading  思路:  在主窗体加载前显示窗体FrmLoading,当主窗体加载完毕后(第一次显示的时候),关闭FrmLoading C#代码如下所示: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; usin

  • C#实现窗体与子线程的交互的方法

    本文实例简述了C#实现窗体与子线程间通讯的方法,对于C#初学者有一定的借鉴价值.具体方法如下: 一般来说窗体上的UI在默认情况下不允许使用子线程(或者其它非创建控件的UI线程)去控制(这在NET2.0以下是允许的,但是考虑到安全性等问题,从2.0开始就禁止使用这个功能,除非Form的CheckForIllegalCrossThreadCalls=true,不推荐这样使用). 那么如何实现C#窗体与子线程的交互呢?具体方法如下: 一.使用Invoke或者BeginInvoke方法: 用一个线程,里

  • C#实现让窗体永远在窗体最前面显示的实例

    本文以实例描述了C#实现让窗体永远在窗体最前面显示的方法,具体步骤如下: 1.新建一个窗体程序,添加一个Timer以及设置它可用并绑定事件. 2.设置窗体的TopMost属性为True 3.然后设置代码如下即可实现. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; usin

  • c#调用存储过程实现登录界面详解

    1,创建存储过程 复制代码 代码如下: create proc Pro_Login(@UserName nvarchar(10),@PassWord nvarchar(10))as select * from [User] UserName=@UserName and PassWord=@PassWord 2,通过类是实现配置数据库字符串连接 复制代码 代码如下: class ConnectionString{public static string conStr = "Data Source=

  • C#窗体间通讯的几种常用处理方法总结

    在进行C#应用程序开发的过程中,经常需要多窗体之间进行数据通信,本文举几个例子,把几种常用的通信方式总结一下,窗体界面如下图所示: 主窗体Form1是一个ListBox,单击选中某列时,弹出窗体Form2,Form2中两个控件,一个是TextBox,显示选中的该列的文本,另一个是按钮,点击时将修改后的值回传,且在Form1中修改相应的列的文本,同时Form2关闭. 方法一:传值 最先想到的,Form2构造函数中接收一个string类型参数,即Form1中选中行的文本,将Form2的TextBox

  • C#窗体编程不显示最小化、最大化、关闭按钮的方法

    本文介绍在C#窗体编程时,如何设置不显示右上角的最小化最大化关闭按钮.可以通过this.ControlBox这个属性的值来控制. 在Windows的窗体编程中,基本上每一个窗体都是一个最小化.最大化和关闭按钮的.见惯了千篇一律,我们有时需要有一点新意,比如来把右上角的这最小化.最大化和关闭三个按钮去掉. 对于最大化和最小化按钮,在C#窗体开发时,各一个属性来启用或禁用这两个按钮.对于最大化来说,this.MaximizeBox=false即可禁用最大化按钮.而这里的this是指窗体对象本身.而t

  • C#实现窗体中的各个控件同比自动放缩大小

    实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录,然后根据窗体改变的大小同时放缩. 简要步骤如下: 1.创建C#窗体程序项目. 2.Panel放置到窗体. 3.设置属性dock为fill. 4.注意MinnumSize不能设置为0, 改成大于0都行. 复制代码 代码如下: public partial class FrmDemo : Form      {          double dFrmWidth;          double dFrmHeig

随机推荐