如何在运行时移除/删除形状

问题描述

所以我在运行时在 vbExpress2008 中绘制了一个六边形

Private Sub Panel2_Paint(ByVal sender As Object,ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel2.Paint

        
       
        Dim Hpoint As Point
        
       yada yada yada

       e.Graphics.Drawpolygon(p,Points)


    End Sub

现在我怎样才能删除它?

解决方法

就您的代码而言,您无法将其删除。每次执行该代码时,它都会绘制该形状,因此无需删除任何内容。如果你想删除它,那么必须有一些东西要删除。这就是为什么您应该将表示绘图的数据存储在一个或多个字段中,然后每次要绘图时从那里获取数据。如果您有 List(Of Point()) 类型的字段,则可以根据需要添加和删除 Point 数组,然后强制执行 Paint 事件。在事件处理程序中,您获取当前数据并绘制它,因此您从 List 中删除的任何内容都将从绘图中删除。例如

Private polygons As New List(Of Point())

Private Sub AddPolygon(points As Point())
    polygons.Add(points)
    Invalidate()
End Sub

Private Sub RemovePolygon(points As Point())
    polygons.Remove(points)
    Invalidate()
End Sub

Private Sub Form1_Paint(sender As Object,e As PaintEventArgs) Handles Me.Paint
    For Each polygon In polygons
        e.Graphics.DrawPolygon(Pens.Black,polygon)
    Next
End Sub

或者,如果您只想显示或隐藏一个多边形,您仍然可以在 Paint 事件处理程序中对其进行硬编码,但使用 If 语句来测试 Boolean 类型的字段{1}}。然后,您可以切换该字段并使其无效以隐藏和显示该多边形。