C#鼠标位置相关获取程序代码介绍

开发 后端
本文是对C#鼠标位置相关获取程序代码的介绍,将从代码谈起,通过实例代码,帮助大家对C#鼠标位置的控制更深入的了解。

这里将介绍C#鼠标位置相关获取程序代码,包括从图片的划分,左右边框的确定,鼠标移动的控制,鼠标手势的控制等等。对于标题栏双击***化的功能,也是重要的实现。

  1. // Mouse Position Operation   
  2. //Code Technology Document   
  3. //NITI Collection   
  4. //图片的划分   
  5. //Bottom_Left   
  6. //Bottom_Middle   
  7. //Bottom_Right   
  8. //   
  9. //Middle_Left左边框   
  10. //Middle_Right右边框   
  11. //标题栏   
  12. //Top_Left   
  13. //Top_Middle   
  14. //Top_Right   
  15. //系统按钮   
  16. //SysButton_Min   
  17. //SysButton_Max   
  18. //SysButton_Close   
  19. //SysButton_Restore   
  20. namespace mouse   
  21. {   
  22.  //以下是上述画皮肤方法的具体实现部分,举一个画左边框的代码示例,   
  23.  private void DrawMiddle_Left(Graphics g)   
  24.  {   
  25.   Brush brush = new TextureBrush(Middle_Left, new Rectangle(0, 0,Middle_Left.Width, Middle_Left.Height));   
  26.   g.FillRectangle(brush, 0, TITLE_WIDTH, Middle_Left.Width,Height - Bottom_Middle.Height - TITLE_WIDTH);   
  27.  }  

C#鼠标位置之鼠标移动 ,以及反应代码 

  1. //定义了一个抽象的基类MouseAction,用来表示所有的鼠标事件,它有一个抽象方法Action:   
  2.  public abstract class MouseAction   
  3.  {   
  4.   public abstract void Action(int ScreenX, int ScreenY, System.Windows.Forms.Form form);   
  5.  }   
  6.     
  7.  //向右拉伸窗口事件的代码响应   
  8. // MouseSizeLeft:拉伸左边框   
  9. // MouseSizeBottom:拉伸下边框   
  10. // MouseSizeTop:拉伸上边框   
  11. // MouseSizeTopLeft:拉伸左上角   
  12. // MouseSizeTopRight:拉伸右上角   
  13. // MouseSizeBottomLeft:拉伸左下角   
  14. // MouseSizeBottomRight:拉伸右下角   
  15. // MouseDrag:鼠标拖动   
  16.  public class MouseSizeRight : MouseAction   
  17.  {   
  18.   private int lx;   
  19.   public MouseSizeRight(int LocationX)   
  20.   {   
  21.    lx = LocationX;   
  22.   }   
  23.   public override void Action(int ScreenX, int ScreenY, System.Windows.Forms.Form form)   
  24.   {   
  25.    form.Width = ScreenX - lx;   
  26.    form.Invalidate();   
  27.   }   
  28.  }   
  29. // 鼠标拖动同样也很简单,不过却稍不同于窗口的缩放拉伸,这里举出它的实现代码:   
  30.  public class MouseDrag : MouseAction   
  31.  {   
  32.   private int x, y;   
  33.   public MouseDrag(int hitX, int hitY)   
  34.   {   
  35.    x = hitX;   
  36.    y = hitY;   
  37.   }   
  38.   public override void Action(int ScreenX, int ScreenY, System.Windows.Forms.Form form)   
  39.   {   
  40.    form.Location = new Point(ScreenX - x, ScreenY - y); [Page]  
  41.   }   
  42.  }   
  43.  //接下来我们开始编写发出事件的代码,先定义几个变量:   
  44.  private int LEFT = 5, RIGHT = 5, BOTTOM = 5, TOP = 5, TITLE_WIDTH = 45;//边框和标题栏的大小   
  45.  private int x = 0, y = 0;//保存鼠标的临时坐标   
  46.  private MouseAction mouse;//鼠标的事件响应对象   
  47.  然后在Form的MouseDown事件中记录下鼠标的当前坐标:   
  48.  x = e.X;   
  49.  y = e.Y;   
  50.  附:e为System.Windows.Forms.MouseEventArgs   
  51. //////////   
  52. ///根据鼠标的坐标定义出事件响应对象:   
  53. ///   
  54.  //鼠标点击左上边框   
  55.  if((e.X <= LEFT + 10 && e.Y <= TOP) || (e.Y <= TOP + 10 && e.X <= LEFT))   
  56.  {   
  57.  mouse = new MouseSizeTopLeft(Location.X, Location.Y, Width, Height);   
  58.  return;   
  59.  }   
  60.  //鼠标点击系统关闭按纽   
  61.  if(e.X > Width - 20 && e.Y > 6 && e.X < Width - 20 + SysButton_Min.Width && e.Y < 6 + SysButton_Min.Height)   
  62.  {   
  63.  Close();   
  64.  return;   
  65.  }   
  66.  
  67.  //大部分的事件响应实际上是在MouseMove事件中完成的:   
  68.  private void Form_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)   
  69.  {   
  70.   this.Parent.Cursor = CheckCursorType(e.X, e.Y);//改变鼠标的指针形状   
  71.   if(mouse != null)   
  72.   {   
  73.   mouse.Action(Control.MousePosition.X, Control.MousePosition.Y, this);//执行时间响应   
  74.   //注意坐标是Control.MousePosition这个静态变量给出的,它的值为鼠标在桌面上的全局坐标   
  75.   }   
  76.  }  

***,C#鼠标位置MouseUp事件中将mouse变量释放掉:

  1.  private void Form_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)   
  2. {   
  3.  mouse = null;   
  4. }   
  5. 加上标题栏的双击***化或者还原的事件:  
  6.  private void Form_DoubleClick(object sender, System.EventArgs e)   
  7.  {   
  8.    if(y > TOP && y < TITLE_WIDTH)   
  9.    {   
  10.     if(WindowState == FormWindowState.Normal)   
  11.     {   
  12.      WindowState = FormWindowState.Maximized;   
  13.      SysButton = SysButton_Restore; [Page]  
  14.      Invalidate();   
  15.     }   
  16.     else if(WindowState == FormWindowState.Maximized)   
  17.     {   
  18.      WindowState = FormWindowState.Normal;   
  19.      SysButton = SysButton_Max;   
  20.      Invalidate();   
  21.     }   
  22.    }   
  23.  }   
  24.     
  25. //防止窗体被缩小成一个点,***给窗口的MinimumSize赋上一个适当的值,例如200,200   
  26. }  

【编辑推荐】

  1. 如何初始化数组详解
  2. C#数组操作的体会浅谈
  3. C#关机代码实例详解
  4. C#关机代码的实现浅析
  5. C#程序设计关闭Windows窗体浅析
责任编辑:彭凡 来源: 中国自学编程网
相关推荐

2009-09-07 18:41:18

2009-08-24 18:06:36

源程序代码C#读取XML文件

2009-08-28 16:03:15

C#程序实现鼠标移动

2010-03-23 14:12:43

Python开发Win

2009-08-05 18:28:05

C#异常处理

2009-09-02 19:11:42

C#鼠标滚轮

2009-08-13 17:36:54

编译C#代码

2010-01-15 10:48:29

C++程序代码

2009-09-01 15:08:07

C#命名规范

2009-09-02 14:06:14

C#文件传送

2010-07-17 00:55:48

PHP Telnet

2010-03-29 17:37:17

Nginx resin

2010-01-15 18:46:08

C++程序代码

2013-07-29 14:28:43

JQueryJQuery实现分页分页程序代码

2011-11-09 13:59:27

代码腐烂

2009-09-01 15:25:01

C#位域

2009-08-14 13:52:18

C#判断数据类型

2009-06-03 14:42:21

Eclipse调试调试Java程序

2010-01-11 17:43:23

C++程序设计

2010-07-13 09:29:37

socketUDP协议
点赞
收藏

51CTO技术栈公众号