2015-06-05 2 views
3

Я рисую несколько строк, используя этот код, но я чувствую, что есть лучший способ сделать это.
E.g. используя многомерный массив? или список?C# Draw несколько строк

private void drawLines() 
    { 
     int[] x1 = { 0, 0, 112, 222, 0, 333, 0, 1}; 
     int[] x2 = { 334, 334, 112, 222, 334, 333, 334, 1 }; 
     int[] y1 = { 100, 200, 300, 300, 1, 300, 300, 300 }; 
     int[] y2 = { 100, 200, 0, 0, 1, 0, 300, 0 }; 

     for (int i = 0; i < x1.Length; i++) 
     { 
      Line line = new Line(); 
      Grid myGrid = gg; 
      line.Stroke = Brushes.Black; 
      line.X1 = x1[i]; 
      line.X2 = x2[i]; 
      line.Y1 = y1[i]; 
      line.Y2 = y2[i]; 
      line.StrokeThickness = 2; 
      myGrid.Children.Add(line); 
     } 

    } 
+0

Как насчет штоков и/или классов? И метод, который возвращает строку. – fsacer

+0

Кажется, что это «Полигон», а не строка ... – atlaste

+0

Если это «Полигон», проверьте https://msdn.microsoft.com/en-us/library/system.windows.shapes.polygon (v = vs.110) .aspx. – fsacer

ответ

6

Я сделал бы Line класса, имеющей начальную и конечную точку линии в STRUCT точке и сделать список этого класса вместо того, четыре массива.

public class MyLine 
{ 
    public Point StartPoint {get; set;} 
    public Point EndPoint {get; set;} 

    public void DrawLine() 
    { 
     //Draw line code goes here 
    } 
} 

Теперь у вас есть класс линии с обязательным полем и методом для рисования линии. Метод Вы drawLines, которые могли бы быть в каком-то другом классе будет создавать список класса MyLine и может сделать этот список линий с использованием методы класса Line DrawLine

private void DrawLines() 
{ 
    List<MyLine> listMyLines = new List<MyLine>(); 
    listMyLines.Add(new MyLine{StartPoint = new Point(0, 100), EndPoint = new Point(334, 100)});  

    for (int i = 0; i < listMyLines.Count; i++) 
    { 
     listMyLines[i].DrawLine(); 
    } 
} 
1

Это может быть лучше.

private void drawLInes() 
{ 
    drawLines(
     new int[] { 0, 334, 100, 100 }, 
     new int[] { 0, 334, 200, 200 }, 
     new int[] { 112, 112, 300, 0 } 
     // ... 
     ); 
} 

private void drawLines(params int[][] lines) 
{ 
    for (int i = 0; i < lines.Length; i++) 
    { 
     Line line = new Line(); 
     Grid myGrid = gg; 
     line.Stroke = Brushes.Black; 
     line.X1 = lines[i][0]; 
     line.X2 = lines[i][1]; 
     line.Y1 = lines[i][2]; 
     line.Y2 = lines[i][3]; 
     line.StrokeThickness = 2; 
     myGrid.Children.Add(line); 
    } 

}