目录
前言
一、界面设计
二、关键技术
1.设置矩形限制区域
2.设置圆形限制区域
3.解除限制
4.效果展示
前言
正常情况下,鼠标的移动范围是整个屏幕,但有时需要鼠标在某一区域内移动,这个区域可以是矩形也可以是圆形,圆形会复杂一点。
一、界面设计
窗体中需要添加三个按钮,分别是设置圆形限制区域,设置矩形限制区域,解除限制,如下图所示:
二、关键技术
1.设置矩形限制区域
需要先在窗体中画一个矩形,利用Cursor.Clip函数把该区域设置为矩形限制区域。
代码如下:
/// <summary>
/// 设置矩形限制区域
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
Graphics gra = this.CreateGraphics();
gra.Clear(this.BackColor);
gra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Pen pen = new Pen(Color.Red);//画笔颜色
gra.DrawRectangle(pen, 10, 10, 500, 400);//画矩形的方法
Point p = this.PointToScreen(new Point(10, 10));//转换为屏幕坐标
this.Cursor = new Cursor(Cursor.Current.Handle);//创建Cursor对象
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);//设置鼠标位置
Cursor.Clip = new Rectangle(p.X,p.Y, 500, 400);//设置鼠标的活动区域
}
2.设置圆形限制区域
限制圆形区域需要自己添加限制逻辑,逻辑如下:
在鼠标移动时,需要判断当前位置坐标与圆心坐标之间的距离是否大于半径,如大于半径,则把鼠标坐标设为之前的坐标,反之,则记录当前的坐标。需要添加Form1_MouseMove事件。
代码如下:
/// <summary>
/// 圆的中心点
/// </summary>
Point PCircleCenter;
/// <summary>
/// 圆的半径
/// </summary>
int r = 200;
/// <summary>
/// 是否限制鼠标
/// </summary>
bool flag = false;
/// <summary>
/// 设置圆形限制区域
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
Graphics gra = this.CreateGraphics();
gra.Clear(this.BackColor);
gra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Pen pen = new Pen(Color.Red);//画笔颜色
gra.DrawEllipse(pen, 10, 10, r*2, r*2);//画椭圆的方法
flag = true;//限制鼠标的标志位
PCircleCenter = this.PointToScreen(new Point(10 + r, 10 + r));//把圆心坐标转换为屏幕坐标
Cursor.Position = PCircleCenter;
}
/// <summary>
/// 旧的鼠标坐标
/// </summary>
Point OldMousePosition;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (flag)
{
Point PX = Control.MousePosition;//获取当前鼠标坐标
double S = Math.Sqrt(Math.Pow(PX.X - PCircleCenter.X, 2) + Math.Pow(PX.Y - PCircleCenter.Y, 2));//计算当前坐标与圆心坐标之间的距离
if (S > r)
Cursor.Position = OldMousePosition;
else
OldMousePosition = PX;
}
else
{
}
}
3.解除限制
代码如下:
/// <summary>
/// 解除鼠标活动区域的限制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
flag = false;//限制鼠标标志位复位
Screen[] screens = Screen.AllScreens;//获取显示的数组
this.Cursor = new Cursor(Cursor.Current.Handle);//创建Cursor对象
Cursor.Clip = screens[0].Bounds;//解除鼠标活动区域的限制
}
4.效果展示
总结文章来源:https://www.toymoban.com/news/detail-594934.html
成功把鼠标限制在圆形或者矩形区域内。文章来源地址https://www.toymoban.com/news/detail-594934.html
到了这里,关于C#实现限制鼠标在一个矩形或者圆形区域内工作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!