Как нарисовать фигуры (более одного) с помощью List, с mouseeventargs? - PullRequest
0 голосов
/ 03 мая 2018
class Cycle : Form1
{
    public void Draw(Graphics G,Brush b, float x, float y, float w, float h)
    {
        G.FillEllipse( b, x, y, w, h);
    }
}

Это мой класс Cycle, унаследованный от Form1.

    List<Point> star = new List<Point>();
    List<Point> endd = new List<Point>();
    private void Panel1_MouseDown(object sender, MouseEventArgs e)
    {
        moving = true;
        Start = e.Location;
        star.Add(e.Location);
    }

    private void Panel1_MouseMove(object sender, MouseEventArgs e)
    {
        if (moving)
        {
            End = e.Location;
            Panel1.Invalidate();
        }
    }

    private void Panel1_MouseUp(object sender, MouseEventArgs e)
    {
        endd.Add(e.Location);
        moving = false;
    }

Это мои аргументы событий мыши, которые хранят местоположения.

    private void Panel1_Paint(object sender, PaintEventArgs e)
    {

            Cycle c = new Cycle();
            if (End.Y > Start.Y && End.X > Start.X)
            {
                foreach (Point pt in star)
                {
                    foreach(Point p in endd)
                        c.Draw(e.Graphics, brush, pt.X - (p.X - pt.X) / 2 - (p.Y - pt.Y) / 2, pt.Y - (p.Y - pt.Y) / 2 - (p.X - pt.X) / 2, ((p.X - pt.X) + (p.Y - pt.Y)), ((p.X - pt.X) + (p.Y - pt.Y)));
                }
            }
    }

И этот код рисует эллипсы на панели. Однако первый эллипс был нарисован идеально, но другие эллипсы стали такими большими, что покрыли всю панель.

Я хочу сохранить местоположения, потому что после рисования 3-4 эллипсов я попытаюсь сохранить точки в .txt. После этого я загрузлю его, чтобы снова нарисовать. Но есть такая проблема на рисунке: /

...