2015-05-15 2 views
1

В случае краски я сделал:Как нарисовать линию между всеми нарисованными точками?

List<Point> drawPoints = GetDrawPoints(); 

if (drawPoints.Count > 1) 
{ 
    foreach (Point p in drawPoints) 
    { 
     e.Graphics.DrawLine(pen, p.X - 2, p.Y - 2, 4, 4); 
    } 
} 

Но вместо рисования линий между точками повлекут последующих, он рисует две линии из одной места в каждой точке.

Я хочу соединить все точки одной линией.

+2

Считаете ли вы попытку ссылаться на предыдущий пункт? –

+1

Посмотрите на 'DrawLines()' и 'DrawPolygon()' –

+0

Справа найдено: e.Graphics.DrawLines (Pens.Black, drawPoints.ToArray()); работающ отлично. –

ответ

5

Использование DrawLines и передать список как массив:

if (drawPoints.Count > 1) 
{ 
    e.Graphics.DrawLines(pen, drawPoints.ToArray()); 
} 
3

Вы ответили на свой вопрос таким образом. Чтобы нарисовать линию, вам нужно как минимум две точки. Но вы продолжаете рисовать свои новостные строки между местоположениями sames. (ваша переменная точка и точка, расположенная в (4; 4)). Вам нужно обновлять две точки в своем foreach и печатать их правильно.

Еще лучше, используйте функцию DrawLines и дайте свой список баллов. с чем-то вроде:

e.Graphics.DrawLines(pen, drawPoints.ToArray());