如何选择和删除已绘制的线条
本文关键字:绘制 删除 何选择 选择 | 更新日期: 2023-09-27 18:17:16
我已经用DrawLine和PaintEvent画了一条简单的线。我想选择这条线并将其从世界上删除!!我想要指导方针和方向,我将如何选择和删除绘制的线?
编辑:我不需要代码。我需要一些指导和指引,仅此而已。所以别再破坏我的名声了
我不是c#专家,但我可以在这里提出一些建议,首先你需要通过使用一些集合(如array)来跟踪你绘制的所有线条。现在,在鼠标事件中,您需要检查点击是否更接近您绘制的任何线条,基于此,您可以从您的集合中选择线条并重新绘制/移动或擦除。我在iOS系统中也这么做过。
请查看以下链接中的更多信息
Graphic - DrawLine -绘制线并移动它->非常接近你所要求的。
如何绘制可选择的线?
如何在c#中使用鼠标绘制和移动形状
希望对您有所帮助
安普
不能选择。只是像素而已。您必须重新绘制绘制线的整个区域,但现在只是没有在Paint事件处理程序中绘制这条线。计算必须重新绘制的区域,并调用控件的Invalidate()方法来重新绘制该区域。
简单的例子:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace TestPaintApp
{
public class TestPaint : Form
{
private bool drawLine = false;
private Point lineStart;
private Point lineEnd;
public TestPaint()
{
var drawLineButton = new Button();
drawLineButton.Text = "Draw line";
drawLineButton.Location = new Point(5, 5);
drawLineButton.Click += DrawLineButton_Click;
var dontDrawLineButton = new Button();
dontDrawLineButton.Text = "Don't draw";
dontDrawLineButton.Location = new Point(5, 30);
dontDrawLineButton.Click += DontDrawLineButton_Click;
GetLineRect();
this.Controls.Add(drawLineButton);
this.Controls.Add(dontDrawLineButton);
this.MinimumSize = new Size(200, 200);
this.Paint += Form_Paint;
this.Resize += Control_Resize;
}
private Rectangle GetLineRect()
{
this.lineStart = new Point(75, 75);
this.lineEnd = new Point(this.ClientSize.Width - 75, this.ClientSize.Height - 75);
return new Rectangle(
Math.Min(lineStart.X, lineEnd.X),
Math.Min(lineStart.Y, lineEnd.Y),
Math.Max(lineStart.X, lineEnd.X),
Math.Max(lineStart.Y, lineEnd.Y)
);
}
private void Form_Paint(object sender, PaintEventArgs e)
{
if (drawLine)
{
e.Graphics.DrawLine(Pens.Red, lineStart, lineEnd);
}
}
private void Control_Resize(object sender, EventArgs e)
{
this.Invalidate(GetLineRect());
}
private void DrawLineButton_Click(object sender, EventArgs e)
{
drawLine = true;
this.Invalidate(GetLineRect());
}
private void DontDrawLineButton_Click(object sender, EventArgs e)
{
drawLine = false;
this.Invalidate(GetLineRect());
}
}
}