在VB.NET中,在Panel中销毁了绘制矩形

时间:2014-03-07 03:20:29

标签: vb.net

在VB.Net中,我有一个表单和一个Panel。所以基本上,当我运行项目时,我可以向下滚动,这意味着由于Panel,我的表单比通常高很多。我可以在完美的位置绘制矩形和线条,但是当我在运行时向下滚动表单时, 矩形被破坏了。这就像一个混乱的矩形和线条出现故障。在运行时向下滚动后,似乎对在哪里维护这些矩形和线条感到困惑。是因为我使用的积分值?是关于点的绝对定位?我该如何解决这个问题?

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

1 个答案:

答案 0 :(得分:0)

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

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