Írjunk programot, amely az egér bal gombjával kattintva a kattintás helyét kék kereszttel jelölje és a következő pont helyét piros vonallal kösse össze Az egér jobb gombjával az utolsó kereszten kattintva törölje vissza a vonalat az előző pontig, és haladva tovább újabb törlést is végezhessünk.
A feladat megoldása
private List<Point> Pontok;
public Form1()
{
InitializeComponent();
Pontok = new List<Point>();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Pontok.Add(e.Location);
this.Refresh();
}
else if (e.Button == MouseButtons.Right)
{
Point mp = e.Location;
foreach (Point pont in Pontok)
{
if (Math.Sqrt(Math.Pow(mp.X - pont.X, 2) +
Math.Pow(mp.Y - pont.Y, 2)) < 5)
{
Pontok.Remove(pont);
this.Refresh();
break;
}
}
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen toll = new Pen(Brushes.Blue, 2);
foreach (Point pont in Pontok)
{
e.Graphics.DrawLine(toll, pont.X - 6, pont.Y,
pont.X + 6, pont.Y);
e.Graphics.DrawLine(toll, pont.X, pont.Y - 6,
pont.X, pont.Y + 6);
}
Point[] pontlanc = Pontok.ToArray();
if (pontlanc.Length>1)
e.Graphics.DrawLines(Pens.Red, pontlanc);
}
A program futási eredményei:
Az utolsó vonal törlése.
További vonalak rajzolása.