EyesBaby功能实现之窗口拖拽与缩放功能

Winform中窗体拖拽主要由鼠标移动事件(MouseMove)、鼠标按下事件(MouseDown)和鼠标释放事件(MouseUp)完成。

以下详细代码:

         private  Point mouseOffset;  // 记录鼠标指针的坐标

        
///   <summary>
        
///  鼠标移动事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  Form1_MouseMove( object  sender, MouseEventArgs e)
        {
            
if  (isMouseDown)
            {
                Point mousePos 
=  Control.MousePosition;
                mousePos.Offset(mouseOffset.X, mouseOffset.Y);
                
//  设置窗口位置等于鼠标移动位置
                Location  =  mousePos;
            }
        }

        
///   <summary>
        
///  鼠标按下事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  Form1_MouseDown( object  sender, MouseEventArgs e)
        {
            
int  xOffset;
            
int  yOffset;

            
if  (e.Button  ==  MouseButtons.Left)
            {
                xOffset 
=   - e.X  -  SystemInformation.FrameBorderSize.Width;
                yOffset 
=   - e.Y  -  SystemInformation.CaptionHeight  -
                SystemInformation.FrameBorderSize.Height;
                mouseOffset 
=   new  Point(xOffset, yOffset);
                isMouseDown 
=   true ;
            }

        }

        
///   <summary>
        
///  鼠标释放事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  Form1_MouseUp( object  sender, MouseEventArgs e)
        {
            
//  修改鼠标状态isMouseDown的值
            
//  确保只有鼠标左键按下并移动时,才移动窗体
             if  (e.Button  ==  MouseButtons.Left)
            {
                isMouseDown 
=   false ;
            }

        }

 

鼠标滚动轴控制窗口大小:

需要实现鼠标滑动滚动轴事件(MouseWheel)。事件参数MouseEventArgs.Delta值分别是120和-120.

代码如下:

 


        
///   <summary>
        
///  鼠标滑动滚动轴事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         void  Form1_MouseWheel( object  sender, MouseEventArgs e)
        {
            Size t 
=  pictureBox1.Size;
            t.Width 
+=  e.Delta;
            t.Height 
+=  e.Delta;
            
//  控制窗口宽度大于100px
             if  (e.Delta == 120 || ( this .Size.Height  >   100   &&   this .Size.Width  >   200 ))
                
this .Size  =  t;
            
//  消息提示居中
            lblMsg.Location  =   new  Point(( this .Width  -  lblMsg.Width)  /   2 , ( this .Height  -  lblMsg.Height)  /   2 );

        }

 


实际上EyesBaby中是通过图片控件来控制窗体的大小和拖动位置。

 

源代码下载地址:http://eyesbaby.codeplex.com/

安装版下载地址:http://files.cnblogs.com/yizhuqing/EyesBabySetup10.zip

我的第一款实用工具-眼保程序(EyesBaby)

EyesBaby1.0使用帮助文档

EyesBaby功能实现之窗口拖拽与缩放功能

EyesBaby功能实现之图片控件上添加字符

EyesBaby功能实现之Windows前景色调节器

EyesBaby功能实现之软件更新

EyesBaby功能实现之窗口渐现效果

 

 欢迎加入EyesBaby开发小组

 EyesBaby需求反馈小组

 

 

你可能感兴趣的:(ESB)