1

我有一个带有平面图图像的 PictureBox。

在该图像上,我想绘制一个多边形,我可以使用以下代码:

Private points As New List(Of Point)

Private Sub FlorPlan_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles FlorPlan.MouseDown

points.Add(e.Location)
FlorPlan.Invalidate(New Rectangle(e.X, e.Y, 5, 5))
End Sub

Private Sub FlorPlan_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles FlorPlan.Paint
    For Each p As Point In points
        e.Graphics.FillRectangle(Brushes.Red, p.X, p.Y, 5, 5)
    Next
End Sub

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim myPen As Pen
    myPen = New Pen(Drawing.Color.Red, 2)

    Dim myGraphics As Graphics = PictureBox.CreateGraphics
    myGraphics.DrawPolygon(myPen, points.ToArray)
    'myGraphics.FillPolygon(Brushes.Red, points.ToArray)
    myGraphics.Dispose()
End Sub

我想做的是抓住那个对象,这样我以后就可以改变背景颜色等。

我应该如何进行?

4

1 回答 1

0

他们通常有两种方法:

  • 在某个自定义类的列表中手动跟踪所有图形对象。
  • 为每个图形对象动态加载一个新控件。

如果您选择后者,我建议您创建自己的UserControl,其中包含有关每个图形对象的所有必要数据,例如多边形中的点。要动态加载它们,您可以执行以下操作:

Private Sub AddGraphicalObject(properties As GraphicalObjectProperties)
    Dim control As New GraphicalObjectControl()
    control.Properties = properties
    ' set position and size
    Panel1.Controls.Add(control)
End Sub

在添加控件时,您可能还希望将一些事件处理程序添加到控件上的某些事件中。

于 2012-12-11T22:18:34.327 回答