Private zeroPoint As Point
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height, Imaging.PixelFormat.Format24bppRgb)
Dim g As Graphics = Graphics.FromImage(bmp)
g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
Dim rect As New Rectangle(0, 0, bmp.Width, bmp.Height)
g.FillRectangle(Brushes.White, rect)
g.TranslateTransform(zeroPoint.X, zeroPoint.Y)
g.ScaleTransform(1, -1)
Dim prevX As Integer, prevY As Integer
For layerIndex As Integer = 1 To 2
For Each row As DataGridViewRow In DataGridView1.Rows
Try
Dim x As Integer = Val(row.Cells("ColumnX").Value.ToString())
Dim y As Integer = Val(row.Cells("ColumnY").Value.ToString())
Select Case layerIndex
Case 1
If row.Index > 0 Then
g.DrawLine(Pens.Black, prevX, prevY, x, y)
End If
Case 2
g.FillEllipse(Brushes.Yellow, x - 3, y - 3, 6, 6)
g.DrawArc(Pens.Blue, x - 3, y - 3, 6, 6, 0, 360)
End Select
prevX = x
prevY = y
Catch ex As Exception
End Try
Next
Next
g.ResetTransform()
g.DrawLine(Pens.Black, 10, zeroPoint.Y, bmp.Width - 15, zeroPoint.Y)
g.DrawLine(Pens.Black, bmp.Width - 25, zeroPoint.Y - 3, bmp.Width - 15, zeroPoint.Y)
g.DrawLine(Pens.Black, bmp.Width - 25, zeroPoint.Y + 3, bmp.Width - 15, zeroPoint.Y)
g.DrawLine(Pens.Black, zeroPoint.X, 15, zeroPoint.X, bmp.Height - 10)
g.DrawLine(Pens.Black, zeroPoint.X + 3, 25, zeroPoint.X, 15)
g.DrawLine(Pens.Black, zeroPoint.X - 3, 25, zeroPoint.X, 15)
For Each row As DataGridViewRow In DataGridView2.Rows
Try
Dim text As String = row.Cells("ColumnText").Value.ToString()
Dim x As Integer = Val(row.Cells("ColumnPosX").Value.ToString())
Dim y As Integer = Val(row.Cells("ColumnPosY").Value.ToString())
g.DrawString(text, PictureBox1.Parent.Font, Brushes.Black, x + zeroPoint.X, zeroPoint.Y - y)
Catch ex As Exception
End Try
Next
g.Flush()
PictureBox1.Image = bmp
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
zeroPoint = New Point(50, PictureBox1.Height - 100)
With DataGridView1.Rows
.Add(20, 50)
.Add(150, 50)
.Add(250, 200)
.Add(150, 250)
.Add(50, 150)
.Add(50, 75)
.Add(20, 50)
End With
With DataGridView2.Rows
.Add("Text 1", 10, 35)
.Add("Text 2", 150, 120)
End With
End Sub