zoukankan      html  css  js  c++  java
  • 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/

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

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

    EyesBaby1.0使用帮助文档

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

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

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

    EyesBaby功能实现之软件更新

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

     

     欢迎加入EyesBaby开发小组

     EyesBaby需求反馈小组

     

    作者:柱子
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    MS SQL Server版本的选择
    ANSI,ASCII,Unicode的区别与联系!
    解决MSSQL中插入中文数据显示乱码的问题!
    ASP.NET中website与webApplication有何区别?
    常用SQL语句总结.
    外键的具体应用和表连接!
    String和datetime在SQL中和在C#中相互转换方法总结
    外键的学习
    if(!IsPostBack)的使用?
    如何在模板的内容页中添加javascript代码?
  • 原文地址:https://www.cnblogs.com/yizhuqing/p/1640856.html
Copyright © 2011-2022 走看看