推 bobobobo:謝謝大大!可是沒有區分X後再連線但看過後有點頭緒了甘溫 02/15 23:21
Public Class Form1
Dim Node1 As ArrayList = New ArrayList()
Dim Node2 As ArrayList = New ArrayList()
Dim w As Integer = 463
Dim h As Integer = 363
Dim TmpBMP As Bitmap = New Bitmap(w, h)
Dim G As Graphics
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Randomize()
Dim R As Random = New Random()
Node1.Clear()
Node2.Clear()
G.Clear(Drawing.Color.White)
Dim Num As Integer = R.Next(1, 100)
Dim x As Integer, y As Integer, i As Integer, l As Integer
l = h / 2
Me.Text = "產生" & Num & "個點"
For i = 1 To Num
x = R.Next(2, w - 2)
y = R.Next(2, h - 2)
If y > l Then
Node2.Add(New Point(x, y))
Else
Node1.Add(New Point(x, y))
End If
G.DrawEllipse(Pens.Blue, x, y, 2, 2)
PictureBox1.Refresh()
Next
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
G = System.Drawing.Graphics.FromImage(TmpBMP)
PictureBox1.BackColor = Drawing.Color.White
PictureBox1.Image = TmpBMP
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
If Node1.Count < 1 Or Node2.Count < 1 Then
Exit Sub
End If
Dim x As Integer, y As Integer, k As Point, k1 As Point
'由小至大排序
For x = 0 To Node1.Count - 2
For y = x + 1 To Node1.Count - 1
If Node1.Item(x).Y > Node1.Item(y).Y Then
k = Node1.Item(x)
Node1.Item(x) = Node1.Item(y)
Node1.Item(y) = k
End If
Next
Next
'由大至小排序
For x = 0 To Node2.Count - 2
For y = x + 1 To Node2.Count - 1
If Node2.Item(x).Y < Node2.Item(y).Y Then
k = Node2.Item(x)
Node2.Item(x) = Node2.Item(y)
Node2.Item(y) = k
End If
Next
Next
k = Node1.Item(0)
For x = 1 To Node1.Count - 1
k1 = Node1.Item(x)
G.DrawLine(Pens.Red, k.X, k.Y, k1.X, k1.Y)
PictureBox1.Refresh()
k = k1
Next
k = Node2.Item(0)
For x = 1 To Node2.Count - 1
k1 = Node2.Item(x)
G.DrawLine(Pens.Black, k.X, k.Y, k1.X, k1.Y)
PictureBox1.Refresh()
k = k1
Next
End Sub
End Class
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.102.15