2014-03-07 43 views
2

在VB.Net中,我有一个窗体和一个面板。所以基本上,当我运行项目时,我可以向下滚动,这意味着我的表单比平常要高很多。我可以在完美的位置绘制矩形和线条,但是当我在运行时向下滚动窗体时,矩形被破坏。这就像混乱的矩形和线条出现乱序。在运行期间向下滚动后,似乎困惑于在哪里维护这些矩形和线条。这是由于我使用的点的价值?是关于点的绝对定位?我该如何解决这个问题?在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 
+0

那是因为你的矩形的位置已经改变了,你需要重新绘制这些矩形。 – Codexer

回答

0

绘制的Graphics为位图,它不会搞砸了。

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