Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.IO
- Public Class MainForm
- Dim nodes(-1) As nodes
- Dim colorN As New System.Drawing.Pen(System.Drawing.Color.Red)
- Dim colorL As New System.Drawing.Pen(System.Drawing.Color.Blue)
- Dim colorT As System.Drawing.Brush = Brushes.Black
- Dim colorR As New System.Drawing.Pen(DefaultBackColor)
- Dim drawTheory As Boolean
- Dim oldTheory As nodes
- Dim newTheory As nodes
- Dim drawID As Integer = -1
- Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Randomize()
- End Sub
- Private Sub drawNode(n As nodes, g As System.Drawing.Graphics, cN As System.Drawing.Pen, cL As System.Drawing.Pen, cT As System.Drawing.Brush)
- If Not n.calculated Then
- n.calculated = True
- If Not n.drawed Then
- g.DrawEllipse(cN, n.x, n.y, 20, 20)
- g.DrawString(n.id.ToString & " " & n.name, DefaultFont, cT, n.x - 5, n.y - 5)
- n.drawed = True
- End If
- For i As Integer = 0 To n.line.GetLength(0) - 1
- If nodes(n.line(i).toID).drawed Then
- g.DrawLine(cL, (nodes(n.line(i).toID).x + 10), (nodes(n.line(i).toID).y + 10), (n.x + 10), (n.y + 10))
- g.DrawString(n.line(i).weigth.ToString, DefaultFont, cT, Convert.ToInt32(nodes(n.line(i).toID).x / 2 + (n.x + 10) / 2), Convert.ToInt32(nodes(n.line(i).toID).y / 2 + (n.y + 10) / 2))
- Else
- g.DrawEllipse(cN, nodes(n.line(i).toID).x, nodes(n.line(i).toID).y, 20, 20)
- g.DrawString(nodes(n.line(i).toID).id.ToString & " " & nodes(n.line(i).toID).name, DefaultFont, cT, nodes(n.line(i).toID).x - 5, nodes(n.line(i).toID).y - 5)
- g.DrawString(n.line(i).weigth.ToString, DefaultFont, cT, Convert.ToInt32(nodes(n.line(i).toID).x / 2 + (n.x + 10) / 2), Convert.ToInt32(nodes(n.line(i).toID).y / 2 + (n.y + 10) / 2))
- nodes(n.line(i).toID).drawed = True
- g.DrawLine(cL, (nodes(n.line(i).toID).x + 10), (nodes(n.line(i).toID).y + 10), (n.x + 10), (n.y + 10))
- End If
- drawNode(nodes(n.line(i).toID), g, cN, cL, cT)
- Next
- End If
- End Sub
- Private Sub drawNodeTheory(n As nodes, g As System.Drawing.Graphics, cN As System.Drawing.Pen, cL As System.Drawing.Pen)
- g.DrawEllipse(cN, n.x, n.y, 20, 20)
- For i As Integer = 0 To n.line.GetLength(0) - 1
- g.DrawLine(cL, (nodes(n.line(i).toID).x + 10), (nodes(n.line(i).toID).y + 10), (n.x + 10), (n.y + 10))
- Next
- End Sub
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs)
- newTheory = New nodes
- oldTheory = New nodes
- newTheory.id = nodes.GetLength(0)
- For i As Integer = 0 To CheckedListBox1.CheckedItems.Count + 1
- If CheckedListBox1.CheckedItems.IndexOf(i) > -1 Then
- newTheory.newVerbindung(Convert.ToInt32(CheckedListBox1.Items.IndexOf(i)), Convert.ToInt32(201 * Rnd()))
- End If
- Next
- drawTheory = True
- End Sub
- Private Sub MainForm_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
- If drawTheory Then
- newTheory.x = e.X
- newTheory.y = e.Y
- Me.Invalidate()
- End If
- End Sub
- Private Sub MianForm_MouseClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseClick
- If drawTheory Then
- If e.Button = Windows.Forms.MouseButtons.Right Then
- newTheory = New nodes
- oldTheory = New nodes
- End If
- If e.Button = Windows.Forms.MouseButtons.Left Then
- ReDim Preserve nodes(nodes.GetLength(0))
- nodes(nodes.GetLength(0) - 1) = New nodes
- nodes(nodes.GetLength(0) - 1) = newTheory
- CheckedListBox1.Items.Add(nodes.GetLength(0) - 1)
- drawID = nodes.GetLength(0) - 1
- For i As Integer = 0 To nodes.GetLength(0) - 1
- nodes(i).drawed = False
- nodes(i).calculated = False
- Next
- End If
- drawTheory = False
- Dim region As System.Drawing.Region
- region = Me.Region
- Me.Invalidate(region)
- End If
- End Sub
- Private Sub MainForm_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
- For i As Integer = 0 To nodes.GetLength(0) - 1
- nodes(i).drawed = False
- nodes(i).calculated = False
- Next
- If drawTheory Then
- drawNodeTheory(oldTheory, e.Graphics, colorR, colorR)
- drawNodeTheory(newTheory, e.Graphics, colorN, colorL)
- oldTheory = newTheory
- End If
- For i As Integer = 0 To nodes.GetLength(0) - 1
- If Not nodes(i).calculated Then
- drawNode(nodes(i), e.Graphics, colorN, colorL, colorT)
- End If
- Next
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- If Not CheckBox1.Checked Then
- Button1.Visible = False
- Using sr As StreamReader = New StreamReader("bahnhof.txt")
- Dim line As String
- Dim break As Boolean
- Dim array(2) As String
- Do
- line = sr.ReadLine()
- If Not line = "#Kanten" Then
- ReDim Preserve nodes(nodes.GetLength(0))
- nodes(nodes.GetLength(0) - 1) = New nodes
- nodes(nodes.GetLength(0) - 1).id = nodes.GetLength(0) - 1
- nodes(nodes.GetLength(0) - 1).name = sr.ReadLine()
- nodes(nodes.GetLength(0) - 1).x = Convert.ToInt32(40 + ((Me.Width - 40) - 40 + 1) * Rnd()) - 20
- nodes(nodes.GetLength(0) - 1).y = Convert.ToInt32(40 + ((Me.Height - 40) - 40 + 1) * Rnd()) - 20
- Else
- break = True
- End If
- Loop Until break
- Do
- line = sr.ReadLine()
- If Not line Is Nothing Then
- array = Split(line)
- If Convert.ToInt32(array(1)) > Convert.ToInt32(array(0)) Then
- nodes(Convert.ToInt32(array(0)) - 1).newVerbindung(Convert.ToInt32(array(1)) - 1, Convert.ToInt32(array(2)))
- Else
- nodes(Convert.ToInt32(array(1)) - 1).newVerbindung(Convert.ToInt32(array(0)) - 1, Convert.ToInt32(array(2)))
- End If
- End If
- Loop Until line Is Nothing
- Me.Refresh()
- sr.Close()
- End Using
- Else
- newTheory = New nodes
- oldTheory = New nodes
- newTheory.id = nodes.GetLength(0)
- For i As Integer = 0 To CheckedListBox1.CheckedItems.Count + 1
- If CheckedListBox1.CheckedItems.IndexOf(i) > -1 Then
- newTheory.newVerbindung(Convert.ToInt32(CheckedListBox1.Items.IndexOf(i)), Convert.ToInt32(201 * Rnd()))
- End If
- Next
- drawTheory = True
- End If
- End Sub
- Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
- ReDim nodes(-1)
- Button1.Visible = True
- CheckedListBox1.Items.Clear()
- If Not CheckBox1.Checked Then
- Button1.Text = "Zeichne aus der Datei ""bahnhof.txt"""
- CheckedListBox1.Visible = False
- Label1.Visible = False
- Else
- Button1.Text = "Zeichne im Kreativmodus"
- CheckedListBox1.Visible = True
- Label1.Visible = True
- End If
- Me.Refresh()
- End Sub
- Private Sub CheckedListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
- End Sub
- End Class
- Public Class nodes
- Public line(-1) As lines
- Public name As String
- Public id As Integer = 0
- Public x As Integer = 0
- Public y As Integer = 0
- Public drawed As Boolean = False
- Public calculated As Boolean = False
- Public Sub newVerbindung(ByVal id As Integer, ByVal weigth As Integer)
- For i = 0 To line.GetLength(0) - 1
- If line(i).toID = id Then
- Return
- End If
- Next
- ReDim Preserve line(line.GetLength(0))
- line(line.GetLength(0) - 1) = New lines
- line(line.GetLength(0) - 1).toID = id
- line(line.GetLength(0) - 1).weigth = weigth
- End Sub
- End Class
- Public Class lines
- Public toID As Integer
- Public weigth As Integer
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement