Я думаю, что System.Drawing.Graphics.Clip - это то, что вы хотите.
Вот пример кода по этой ссылке:
Private Sub SetAndFillClip(ByVal e As PaintEventArgs)
' Set the Clip property to a new region.
e.Graphics.Clip = New Region(New Rectangle(10, 10, 100, 200))
' Fill the region.
e.Graphics.FillRegion(Brushes.LightSalmon, e.Graphics.Clip)
' Demonstrate the clip region by drawing a string
' at the outer edge of the region.
e.Graphics.DrawString("Outside of Clip", _
New Font("Arial", 12.0F, FontStyle.Regular), _
Brushes.Black, 0.0F, 0.0F)
End Sub
Чтобы заполнить все, что находится за пределами области, вам нужно будет определить экстенты DC, в который вы рисуете, и затем заполнить этот прямоугольник после того, как установите Graphics.Clip в область, созданную из ваших точек.
Итак, ваш код может выглядеть примерно так:
Private Sub SetAndFillClip(ByVal e As PaintEventArgs)
' Set the Clip property to a new region.
e.Graphics.Clip = GetRegionFromYourPoints()
' Fill the entire client area, clipping to the Clip region
e.Graphics.FillRectangle(Brushes.LightSalmon, GetWindowExtentsFromYourWindow())
End Sub
Эта ссылка показывает, как создать регион из массива точек:
http://www.vb -helper.com / howto_net_control_region.html