У меня есть VB.Net PictureBox floorPlanImage
в форме form1
.
Я загружаю изображение в поле:
floorPlanImage.image = my.resources.ResourceManager.GetObject("level8") 'this is actually dynamic, and this part works
Я пытаюсь создать оверлейчтобы выделить область изображения:
Public Sub highlightPrintArea(ByVal x1 As Integer, ByVal y1 As Integer, ByVal x2 As Integer, ByVal y2 As Integer)
'**** DOES NOT WORK
Dim g As Graphics = Me.CreateGraphics
Dim r As Rectangle = New Rectangle(x1, y1, x2 - x1, y2 - y1) 'these are args passed in to the function
Dim pen As Pen = New Pen(Color.FromArgb(128, 32, 100, 200), 1) 'semi-transparent
Dim b As Brush = New SolidBrush(pen.Color)
g.FillRectangle(b, r)
end sub
Мне нужно сделать это динамически во время выполнения, скажем, по нажатию кнопки.Вышеупомянутая функция, кажется, не рисует прямоугольник.
Однако, если у меня есть функция, которая Handles floorPlanImage.Paint
похожа на следующую, тогда прямоугольник рисуется так, как я ожидаю:
Private Sub floorPlanImage_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles floorPlanImage.Paint
'**** Works, but does not suit my workflow
Dim g As Graphics = e.Graphics
Dim r As Rectangle = New Rectangle(100, 100, 100, 100)
Dim pen As Pen = New Pen(Color.FromArgb(128, 32, 100, 200), 1)
Dim b As Brush = New SolidBrush(pen.Color)
g.FillRectangle(b, r)
End Sub
Вопрос (наконец-то)
Как я могу изменить мою функцию onclick для правильного наложения прямоугольника на мой PictureBox?