我正在开发一个Windows窗体应用程序.当我单击表单上的任何位置时,使用Graphics.DrawEllipse方法绘制一个小圆圈.我目前将圆圈的中心点存储在列表中,以检查我点击的点是否位于圆圈内.如何选择圆圈,将其拖放到表单中的其他位置?
任何帮助赞赏
由于您没有提供代码,我们无法修复您的代码.相反,我提供了一个简单的工作方式,你可以画一个圆圈并移动它.
private readonly List<Circle> circles = new List<Circle>();
private Circle selectedCircle = null;
protected override void OnMouseDown(MouseEventArgs e)
{
Circle hitCircle = circles.FirstOrDefault(x => x.Bounds.Contains(e.Location));
if (hitCircle == null)
{
circles.Add(new Circle { Bounds = new Rectangle(e.Location, new Size(50, 50)) });
this.Invalidate();
selectedCircle = null;
}
else
{
selectedCircle = hitCircle;
}
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (selectedCircle != null && e.Button == MouseButtons.Left)
{
selectedCircle.Move(e.Location);
this.Invalidate();
}
base.OnMouseMove(e);
}
protected override void OnPaint(PaintEventArgs e)
{
foreach (var circle in circles)
{
e.Graphics.DrawEllipse(Pens.Black, circle.Bounds);
}
base.OnPaint(e);
}
public class Circle
{
public Rectangle Bounds { get; set; }
public void Move(Point currentMousePoint)
{
Bounds = new Rectangle(currentMousePoint, Bounds.Size);
}
}
Run Code Online (Sandbox Code Playgroud)
这个片段可以让你知道.我确信您可以修改代码以进行更改以满足您的要求.
如果您在下方没有圆圈时单击表单,此代码将创建新圆圈,如果已存在圆圈,则会选择它.移动鼠标实际上会移动圆圈.
注意:此代码应放在派生类中Control.base关键字是指Control或Form或其他什么.
| 归档时间: |
|
| 查看次数: |
1482 次 |
| 最近记录: |