我想要一个使用.net在运行时通过拖动来选择一个区域的功能

本文关键字:一个 拖动 选择 功能 区域 net 我想要 运行时 | 更新日期: 2023-09-27 17:54:19

我试图在。net中选择一个区域,该区域将在窗体中的任何地方,这并不局限于一个控件,通常该区域看起来像一个正方形,在运行时使用鼠标在窗体上拖动,如果在单击按钮前"保存"即,保存选定的区域,当下次页面加载时,该特定区域应该是可点击的。现在我不知道从哪里开始,但如果一些想法是给予它将是更有帮助的我开发这个功能的一些代码。有没有人告诉我如何实现这个功能,以便我可以继续开发代码?

我想要一个使用.net在运行时通过拖动来选择一个区域的功能

这不是我的代码…选择区域

  public partial class Form1 : Form
        {
            bool canResize;
            int mX, mY;
            Rectangle rect = new Rectangle();
            public Form1()
            {
                InitializeComponent();
            }
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawRectangle(new Pen(Brushes.Purple, 2), rect);
            }
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                canResize = true;
                mX = e.X; mY = e.Y;
                rect.Location = new Point(mX, mY);
            }
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                canResize = false;
            }
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                if (canResize)
                {
                    if (mX < e.X)
                    {
                        rect.X = mX;
                        rect.Width = e.X - mX;
                    }
                    else
                    {
                        rect.X = e.X;
                        rect.Width = mX - e.X;
                    }
                    if (mY < e.Y)
                    {
                        rect.Y = mY;
                        rect.Height = e.Y - mY;
                    }
                    else
                    {
                        rect.Y = e.Y;
                        rect.Height = mY - e.Y;
                    }
                    this.Invalidate();
                }
            }
        }

无论你是在WinForms还是WPF中编程,你都可以捕获鼠标up和鼠标down事件,以及它们各自在屏幕上的位置。然后,您可以询问舞台上的每个元素是否有任何角在鼠标向上和鼠标向下点之间的矩形区域内。