難點是在定位坐標.Imports System.DrawingPublic Class Form1 '帶小實心圓的圓 Private Sub CoreCircle(ByVal CX As Single, ByVal CY As Single, ByVal RW As Single, ByVal RI As Single) Dim grap As Graphics = Me.CreateGraphics Dim LTW As Point Dim LTI As Point Dim SizeW As Size Dim SizeI As Size LTW.X = CX - RW LTW.Y = CY - RW LTI.X = CX - RI LTI.Y = CY - RI SizeW.Width = RW * 2 SizeW.Height = RW * 2 SizeI.Width = RI * 2 SizeI.Height = RI * 2 Dim rg As Rectangle = New Rectangle(LTI, SizeI) Dim drawRect As New RectangleF(LTW, SizeW) grap.FillEllipse(Brushes.Black, rg) grap.DrawEllipse(Pens.Black, drawRect) End Sub '空心圓 Private Sub CoreLessCircle(ByVal CX As Single, ByVal CY As Single, ByVal RW As Single) Dim grap As Graphics = Me.CreateGraphics Dim LTW As Point Dim SizeW As Size LTW.X = CX - RW LTW.Y = CY - RW SizeW.Width = RW * 2 SizeW.Height = RW * 2 Dim drawRect As New RectangleF(LTW, SizeW) grap.DrawEllipse(Pens.Black, drawRect) End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim grap As Graphics = Me.CreateGraphics Dim Point1 As PointF = New PointF(194, 198) Dim Point2 As PointF = New PointF(194, 202) Dim Point3 As PointF = New PointF(200, 200) Dim Point As PointF() = {Point1, Point2, Point3} Dim pen As Pen = New Pen(Color.Black, 1) pen.DashStyle = Drawing2D.DashStyle.Solid pen.EndCap = Drawing2D.LineCap.ArrowAnchor CoreCircle(100, 200, 30, 5) 'P1 grap.DrawString("P1", Me.Font, Brushes.Black, 95, 155) grap.DrawLine(pen, 130, 200, 200, 200) 'L1 grap.DrawLine(Pens.Black, 200, 140, 200, 260) 'T1 grap.DrawString("T1", Me.Font, Brushes.Black, 192, 125) grap.DrawLine(pen, 200, 200, 270, 145) 'L2 grap.DrawLine(pen, 200, 200, 270, 255) 'L3 CoreLessCircle(300, 140, 30) 'P2 grap.DrawString("P2", Me.Font, Brushes.Black, 295, 95) CoreLessCircle(300, 260, 30) 'P3 grap.DrawString("P3", Me.Font, Brushes.Black, 295, 215) grap.DrawLine(pen, 330, 140, 400, 140) 'L4 grap.DrawLine(pen, 330, 260, 400, 260) 'L5 grap.DrawLine(Pens.Black, 400, 100, 400, 180) 'T2 grap.DrawString("T2", Me.Font, Brushes.Black, 392, 85) grap.DrawLine(Pens.Black, 400, 220, 400, 300) 'T3 grap.DrawString("T3", Me.Font, Brushes.Black, 392, 205) grap.DrawLine(pen, 400, 140, 480, 140) 'L6 CoreLessCircle(510, 140, 30) 'P5 grap.DrawString("P5", Me.Font, Brushes.Black, 505, 95) grap.DrawLine(pen, 400, 260, 480, 260) 'L7 CoreLessCircle(510, 260, 30) 'P4 grap.DrawString("P4", Me.Font, Brushes.Black, 505, 215) grap.DrawLine(pen, 540, 260, 620, 260) 'L8 grap.DrawLine(Pens.Black, 620, 220, 620, 300) 'T4 grap.DrawString("T4", Me.Font, Brushes.Black, 612, 205) Dim P1 As PointF = New PointF(620, 260) Dim P2 As PointF = New PointF(650, 260) Dim P3 As PointF = New PointF(650, 450) Dim P4 As PointF = New PointF(100, 450) Dim P5 As PointF = New PointF(100, 230) Dim P As PointF() = {P1, P2, P3, P4, P5} grap.DrawLines(pen, P) 'L9 End Sub End Class
'帶小實心圓的圓
Private Sub CoreCircle(ByVal CX As Single, ByVal CY As Single, ByVal RW As Single, ByVal RI As Single)
Dim grap As Graphics = Me.CreateGraphics
Dim LTW As Point
Dim LTI As Point
Dim SizeW As Size
Dim SizeI As Size LTW.X = CX - RW
LTW.Y = CY - RW
LTI.X = CX - RI
LTI.Y = CY - RI
SizeW.Width = RW * 2
SizeW.Height = RW * 2
SizeI.Width = RI * 2
SizeI.Height = RI * 2 Dim rg As Rectangle = New Rectangle(LTI, SizeI)
Dim drawRect As New RectangleF(LTW, SizeW)
grap.FillEllipse(Brushes.Black, rg)
grap.DrawEllipse(Pens.Black, drawRect)
End Sub '空心圓
Private Sub CoreLessCircle(ByVal CX As Single, ByVal CY As Single, ByVal RW As Single)
Dim grap As Graphics = Me.CreateGraphics
Dim LTW As Point
Dim SizeW As Size LTW.X = CX - RW
LTW.Y = CY - RW
SizeW.Width = RW * 2
SizeW.Height = RW * 2 Dim drawRect As New RectangleF(LTW, SizeW)
grap.DrawEllipse(Pens.Black, drawRect)
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim grap As Graphics = Me.CreateGraphics
Dim Point1 As PointF = New PointF(194, 198)
Dim Point2 As PointF = New PointF(194, 202)
Dim Point3 As PointF = New PointF(200, 200)
Dim Point As PointF() = {Point1, Point2, Point3} Dim pen As Pen = New Pen(Color.Black, 1)
pen.DashStyle = Drawing2D.DashStyle.Solid
pen.EndCap = Drawing2D.LineCap.ArrowAnchor CoreCircle(100, 200, 30, 5) 'P1
grap.DrawString("P1", Me.Font, Brushes.Black, 95, 155)
grap.DrawLine(pen, 130, 200, 200, 200) 'L1
grap.DrawLine(Pens.Black, 200, 140, 200, 260) 'T1
grap.DrawString("T1", Me.Font, Brushes.Black, 192, 125) grap.DrawLine(pen, 200, 200, 270, 145) 'L2
grap.DrawLine(pen, 200, 200, 270, 255) 'L3 CoreLessCircle(300, 140, 30) 'P2
grap.DrawString("P2", Me.Font, Brushes.Black, 295, 95)
CoreLessCircle(300, 260, 30) 'P3
grap.DrawString("P3", Me.Font, Brushes.Black, 295, 215) grap.DrawLine(pen, 330, 140, 400, 140) 'L4
grap.DrawLine(pen, 330, 260, 400, 260) 'L5
grap.DrawLine(Pens.Black, 400, 100, 400, 180) 'T2
grap.DrawString("T2", Me.Font, Brushes.Black, 392, 85)
grap.DrawLine(Pens.Black, 400, 220, 400, 300) 'T3
grap.DrawString("T3", Me.Font, Brushes.Black, 392, 205)
grap.DrawLine(pen, 400, 140, 480, 140) 'L6
CoreLessCircle(510, 140, 30) 'P5
grap.DrawString("P5", Me.Font, Brushes.Black, 505, 95) grap.DrawLine(pen, 400, 260, 480, 260) 'L7
CoreLessCircle(510, 260, 30) 'P4
grap.DrawString("P4", Me.Font, Brushes.Black, 505, 215)
grap.DrawLine(pen, 540, 260, 620, 260) 'L8
grap.DrawLine(Pens.Black, 620, 220, 620, 300) 'T4
grap.DrawString("T4", Me.Font, Brushes.Black, 612, 205) Dim P1 As PointF = New PointF(620, 260)
Dim P2 As PointF = New PointF(650, 260)
Dim P3 As PointF = New PointF(650, 450)
Dim P4 As PointF = New PointF(100, 450)
Dim P5 As PointF = New PointF(100, 230)
Dim P As PointF() = {P1, P2, P3, P4, P5}
grap.DrawLines(pen, P) 'L9
End Sub
End Class