Немного разочарован тем, что никто не может ответить на этот вопрос, но это происходит.Поэтому я нашел обходной путь, который, хотя и не идеален, но, надеюсь, поможет кому-то, кто застрял в такой же ситуации.Может быть, кто-то увидит это и предложит более элегантное решение.
Так что, когда у меня есть последний «теневой» многоугольник, я не могу найти решение VB.NET, чтобы нарисовать его как есть, но это не так.Я не могу преобразовать его в формат, который можно нарисовать в картинке.Вот код, который я придумал:
Private Sub createShadows()
Dim myPen As Pen
Dim myBrush As Brush
Dim myPoints As Point()
Dim listPoints As New List(Of Point)
Dim x As Double
Dim y As Double
' Convert the complex shape into a polygon shape in SQL and bring all the vertex
' points into VB and put into a string variable (curBlack)
mConn.Open()
Dim cmd = New SqlCommand("Select CurrentBlack.STCurveToLine().STAsText() From tbl_Map_Master Where MapID = " &
cmbDN.SelectedItem(0), mConn)
Dim curBlack As String = cmd.ExecuteScalar
mConn.Close()
' Now parse the vertex points from SQL format into a set of VB points
curBlack = curBlack.Replace("POLYGON ((", "").Replace(")", "") & ",,"
While curBlack.Length > 1
x = CInt(Strings.Left(curBlack, InStr(curBlack, " "))) * iZoom + centerX
curBlack = Strings.Right(curBlack, Len(curBlack) - InStr(curBlack, " "))
y = CInt(Strings.Left(curBlack, InStr(curBlack, ",") - 1)) * iZoom + centerY
curBlack = Strings.Right(curBlack, Len(curBlack) - InStr(curBlack, ",") - 1)
listPoints.Add(New Point(x, y))
End While
myPoints = listPoints.ToArray
' Now use the points array to draw a filled polygon
myPen = New Pen(Drawing.Color.White, 0)
myBrush = New SolidBrush(Color.FromArgb(170, 0, 0, 0))
Dim myGraphics As Graphics = pbDN.CreateGraphics
myGraphics.DrawPolygon(myPen, myPoints)
myGraphics.FillPolygon(myBrush, myPoints)
End Sub
Как я уже сказал, это не идеальное решение, поэтому оно немного замедляет производительность, но работает.Я уверен, что являюсь любителем VB.NET, черт возьми, я даже не могу заставить пример кода выглядеть прямо здесь, даже текущий код не оптимален, но он выполняет свою работу.Надеюсь, кто-то найдет это полезным.