Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Построить многоугольник


Автор: Alkash 14.7.2009, 08:17
Доброго времени суток господа. Подскажите - как построить многоугольник по списку точек? Из-за некоторых ньюансов - использовать Массив, метод ToArray и ArrayList не представляется возможным. Буду премного благодарен.

Автор: Alkash 14.7.2009, 15:37
Проблема не решена...Пока выродил вот что:

Код

public void SelectionPointRect()
  {
    int i=0;//счётчик итераций
//Spoint - List<Point>, коллекция точек тоесть
            Point X, Y, Z,Last,First;//точки
            i = 0;
            int k=0;
            Pen SelPen = new Pen(Color.Black, 2);//Карандаш рисования по форме
            //  SelPen.DashStyle = 
            First = SPoint[0];
            int last = SPoint.Count;
            try
            {
                
                while (SPoint.Count - 1 != 0)
                {
                    X = SPoint[i];
                    i++;
                    Y = SPoint[i];
                    pictureBox1.CreateGraphics().DrawLine(SelPen, X, Y);
                    i++;
                    Z = SPoint[i];
                    //k = i;
                    k = i;
                    pictureBox1.CreateGraphics().DrawLine(SelPen, Y, Z);
 
                }
            }
             catch
            {
                label1.Text = " i = " + i;
             }
            Last = SPoint[k];
            pictureBox1.CreateGraphics().DrawLine(SelPen, First, Last);
        }


Однако - кажется это не самое лучшее решение. Плюс - на предполедней итерации - вываливается эксепшн. 
Помогите всё же разобраться) Заранее благодарен.

Автор: PashaPash 14.7.2009, 15:43
Alkash, Graphics.DrawPolygon?

Автор: Alkash 14.7.2009, 16:15
DrawPolygon - конечно упростит, но необходимо именно линиями.

Автор: Alkash 14.7.2009, 16:53
Через DrawPolygon - всё полочилось

Код

public void SelectionPointRect()
        {
            int len = SPoint.Count;
            Point[] arr = new Point[len];
            Pen SelPen = new Pen(Color.Black, 2);
            int last = SPoint.Count;
            int iter = 0;
           

                foreach (Point varN in SPoint)
                {
                    arr[iter] = varN;
                    iter++;
                }
          
                DrawForm.CreateGraphics().DrawPolygon(SelPen, arr);

        }
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)