2016-06-20 5 views
0

Я экспериментирую с событием окраски VB.Net, и для этого эксперимента я хотел бы создать повторяющийся горизонтальный или вертикальный (в зависимости от параметра, который я вводил) и проведите петлю до тех пор, пока она не встретит соответствующую конечную точку x и y.Создание повторяющейся строки путем циклирования путем предоставления координат x и y

Что-то вроде этого:

enter image description here

enter image description here

То, что я пытаюсь достичь, учитывая х и у начальной точки и х и у конечной точки функция должна создайте вертикальную или горизонтальную линию, начинающуюся с заданной начальной точки, пока она не достигнет заданной конечной точки.

Я могу создать curveline и straightline с помощью paintevent, но прямо сейчас у меня нет никакой идеи о том, как выполнить цикл в заданной начальной и конечной точке x и y.

ответ

2

Вам просто нужно использовать Для цикла для итерации координат x/y. Вот пример:

Public Class Form1 

    Private Enum Orientation 
     Vertical 
     Horizontal 
    End Enum 

    Protected Overrides Sub OnPaint(e As PaintEventArgs) 

     Dim orient As Orientation = Orientation.Vertical 
     Dim x As Integer = 100   'X Coord 
     Dim y As Integer = 100   'Y Coord 
     Dim count As Integer = 10  'Number of Lines to draw 
     Dim spacing As Integer = 5  'Spacing between lines in pixels 
     Dim length As Integer = 20  'Length of each line in pixels 
     Dim thickness As Integer = 3 'Thickness of each line in pixels 

     drawLines(x, y, orient, count, spacing, length, thickness, e.Graphics) 
    End Sub 

    Private Sub drawLines(x As Integer, y As Integer, orient As Orientation, count As Integer, spacing As Integer, length As Integer, thickness As Integer, g As Graphics) 

     'Create the Pen in a using block so it will be disposed. 
     'The code uses a red pen, you can use whatever color you want 
     Using p As New Pen(Brushes.Red, CSng(thickness)) 

      'Here we iterate either the x or y coordinate to draw each 
      'small segment. 
      For i As Integer = 0 To count - 1 
       If orient = Orientation.Horizontal Then 
        g.DrawLine(p, x + ((thickness + spacing) * i), y, x + ((thickness + spacing) * i), y + length) 
       Else 
        g.DrawLine(p, x, y + ((thickness + spacing) * i), x + length, y + ((thickness + spacing) * i)) 
       End If 
      Next 

     End Using 

    End Sub 
End Class 
+0

Это действительно действительно здорово! Я не ожидаю, что это будет так просто. –

0

Вы пробовали что-то вроде:

For x = xstart to xend Step Spacing 

Next 

Где:

  • XStart = начальной точке
  • Xend = ваша конечная точка
  • Spacing = расстояние между линиями
Смежные вопросы