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中是通过图片控件来控制窗体的大小和拖动位置。

  • 相关阅读:
    2019-2020-2 网络对抗技术 20175217 Exp6 MSF基础应用
    2020_1课程设计—基于BC的证书格式转换工具的设计与实现—第二周进展
    2019-2020-2 网络对抗技术 20175217 Exp5 信息搜集与漏洞扫描
    2019-2020-2 网络对抗技术 20175217 Exp4 恶意代码分析
    2019-2020-2 网络对抗技术 20175205 Exp 9 Web安全基础
    2019-2020-2 网络对抗技术 20175205 Exp8 Web基础
    2019-2020-2 网络对抗技术 20175205 Exp7 网络欺诈防范
    2020_1课程设计—基于BC的证书格式转换工具的设计与实现—个人报告
    2020_1课程设计—基于BC的证书格式转换工具的设计与实现—Week3
    2019-2020-2 网络对抗技术 20175205 Exp6 MSF基础应用
  • 原文地址:https://www.cnblogs.com/jcomet/p/1700379.html
Copyright © 2011-2022 走看看