在VB.NET中在面板内绘制矩形

在VB.NET中在面板内绘制矩形,vb.net,Vb.net,在VB.Net中,我有一个窗体和一个面板。因此,基本上,当我运行项目时,我可以向下滚动,这意味着由于面板的原因,我的表单比平常要高得多。我可以在完美的位置绘制矩形和直线,但当我在运行时向下滚动表单时, 矩形被破坏了。这就像是一个混乱的矩形和线条出现的无序。在运行时向下滚动后,我似乎对在何处维护这些矩形和线条感到困惑。这是因为我使用的点的值吗?是关于点的绝对定位吗?我怎样才能解决这个问题 Private Sub Form2_Paint(sender As Object, e As PaintEve

在VB.Net中,我有一个窗体和一个面板。因此,基本上,当我运行项目时,我可以向下滚动,这意味着由于面板的原因,我的表单比平常要高得多。我可以在完美的位置绘制矩形和直线,但当我在运行时向下滚动表单时, 矩形被破坏了。这就像是一个混乱的矩形和线条出现的无序。在运行时向下滚动后,我似乎对在何处维护这些矩形和线条感到困惑。这是因为我使用的点的值吗?是关于点的绝对定位吗?我怎样才能解决这个问题

Private Sub Form2_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
    ' Create pen. 
    Dim blackPen As New Pen(Color.Black, 1)
    e.Graphics.DrawRectangle(blackPen, 14, 220, 726, 30)
    e.Graphics.DrawRectangle(blackPen, 14, 250, 726, 45)
    e.Graphics.DrawLine(blackPen, 143, 250, 143, 295)
    e.Graphics.DrawLine(blackPen, 279, 250, 279, 295)
    e.Graphics.DrawLine(blackPen, 377, 250, 377, 295)
    e.Graphics.DrawLine(blackPen, 502, 250, 502, 295)
    e.Graphics.DrawLine(blackPen, 14, 295, 14, 325)
    e.Graphics.DrawLine(blackPen, 740, 295, 740, 325)
    e.Graphics.DrawRectangle(blackPen, 14, 325, 726, 40)
    e.Graphics.DrawRectangle(blackPen, 14, 365, 726, 37)
    e.Graphics.DrawRectangle(blackPen, 14, 402, 726, 32)
    e.Graphics.DrawRectangle(blackPen, 14, 434, 726, 32)
    e.Graphics.DrawRectangle(blackPen, 14, 466, 726, 32)
    e.Graphics.DrawRectangle(blackPen, 14, 498, 726, 32)
    e.Graphics.DrawRectangle(blackPen, 14, 530, 726, 32)
    e.Graphics.DrawRectangle(blackPen, 14, 562, 726, 32)
    e.Graphics.DrawRectangle(blackPen, 14, 594, 726, 50)
End Sub

将图形绘制为位图,它不会弄乱它

Private Sub Form2_Shown(sender As Object, e As EventArgs) Handles Me.Shown
 PaintTheForm()
End Sub
Private Sub PaintTheForm()
 Dim bmp As New Bitmap(Me.Width, Me.Height)
 Using g As Graphics = Graphics.FromImage(bmp)
  Dim blackPen As New Pen(Color.Black, 1)
  g.DrawRectangle(blackPen, 14, 220, 726, 30)
  g.DrawRectangle(blackPen, 14, 250, 726, 45)
  g.DrawLine(blackPen, 143, 250, 143, 295)
  g.DrawLine(blackPen, 279, 250, 279, 295)
  g.DrawLine(blackPen, 377, 250, 377, 295)
  g.DrawLine(blackPen, 502, 250, 502, 295)
  g.DrawLine(blackPen, 14, 295, 14, 325)
  g.DrawLine(blackPen, 740, 295, 740, 325)
  g.DrawRectangle(blackPen, 14, 325, 726, 40)
  g.DrawRectangle(blackPen, 14, 365, 726, 37)
  g.DrawRectangle(blackPen, 14, 402, 726, 32)
  g.DrawRectangle(blackPen, 14, 434, 726, 32)
  g.DrawRectangle(blackPen, 14, 466, 726, 32)
  g.DrawRectangle(blackPen, 14, 498, 726, 32)
  g.DrawRectangle(blackPen, 14, 530, 726, 32)
  g.DrawRectangle(blackPen, 14, 562, 726, 32)
  g.DrawRectangle(blackPen, 14, 594, 726, 50)
  Me.BackgroundImage = bmp
 End Using
End Sub

这是因为矩形的位置已更改,您需要重新绘制这些矩形。