.net 在picturebox上绘制多个多边形
我有一个带平面图的图片盒 在该图像上,我想绘制一个多边形,我可以使用以下代码:.net 在picturebox上绘制多个多边形,.net,vb.net,.net,Vb.net,我有一个带平面图的图片盒 在该图像上,我想绘制一个多边形,我可以使用以下代码: 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.In
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
我想做的是抓住那个物体,这样我以后可以改变背景色,等等
我应该如何进行 这通常有两种方式:
- 手动跟踪某些自定义类列表中的所有图形对象
- 为每个图形对象动态加载新控件
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
在添加控件上的某些事件时,您可能也希望向这些事件添加一些事件处理程序。您需要跟踪某个自定义类的对象列表中每个图形对象的所有属性,或者需要将每个对象显示为一个新控件,并让每个控件保留所有这些属性。您可以在每次需要另一个图形对象时动态实例化一个新控件。@Stevendogart我应该如何动态实例化一个新控件?我尝试创建一个新的picturebox,然后将图形放入其中,并将新的picturebox添加到现有的picturebox中。是这样吗?如何创建一个新控件来存储该类型的信息?右键单击项目,然后在关联菜单中选择向项目添加新项。在对话框窗口中,选择要将其作为用户控件。有关更多信息,请在网上搜索——我相信其他网站上也有一些很棒的教程。如果您只需要一个图片框,则只需将图片框控件拖动到设计器中的用户控件,然后将其停靠属性设置为“填充”。