2016-01-09 3 views
0

У меня есть кодГрафика Исчезают панели на прокрутке

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint 

    Using myPen As New Pen(Drawing.Color.BurlyWood, 6) 


     If upTimer.Enabled = True Then 

      e.Graphics.DrawLine(myPen, x1, y1, x1, y2) 

     End If 
     If leftTimer.Enabled = True Then 
      e.Graphics.DrawLine(myPen, x1, y1, x2, y1) 
     End If 
     If rightTimer.Enabled = True Then 
      e.Graphics.DrawLine(myPen, x1, y1, x2, y1) 
     End If 
     If downTimer.Enabled = True Then 

      e.Graphics.DrawLine(myPen, x1, y1, x1, y2) 
     End If 
    End Using 
End Sub 

Где x1, y1, x2 и y2 являются initalized к нулю в Form_Load.

Таймеры код являются:

Private Sub upTimer_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick 

    y2 = y2 + 5 

End Sub 
Private Sub leftTimer_Tick(sender As Object, e As EventArgs) Handles leftTimer.Tick 
    x2 = x2 - 5 

End Sub 
Private Sub rightTimer_Tick(sender As Object, e As EventArgs) Handles rightTimer.Tick 

    x2 = x2 + 5 
End Sub 
Private Sub downTimer_Tick(sender As Object, e As EventArgs) Handles downTimer.Tick 

    y2 = y2 - 5 
End Sub 

Я четыре кнопки, чтобы включить эти четыре timers.Now проблема заключается в том, что, когда я автоматически прокручивать PictureBox, содержащийся в панели или вручную рисунки получить disappeared.How может Я избегаю этого?

ответ

0

Попробуйте с этим обходным путем:

Private Sub Panel1_Scroll(sender As Object, e As ScrollEventArgs) Handles Panel1.Scroll 
    PictureBox1.Refresh() 
End Sub 

Но при прокрутке панели, то PictureBox должен обновиться. Я попробовал это с помощью простого теста: я добавил глобальную переменную «count» в событии «paint» в окне изображения, после чего я добавил +1 к переменной «count» и напечатал это значение (от события рисования) до метки в форма. Счетчик должен включать каждый свиток.

+0

Я попробовал PictureBox1.Refresh() в событии прокрутки панели, но опять то же самое происходит. Строки исчезают. Я хочу добавить, что таймер (по одному постоянно работает). –

+0

В любом случае добавьте обновление также на таймеры, но я думаю (IMHO), что вы ошибаетесь в логике. Попробуйте эти изменения: в событии рисования добавьте только одну строку, добавьте только один таймер и добавьте 4 булевскую глобальную переменную. Установите логическую переменную с истинным или ложным на ваших кнопках (например: btn1 set blnDirectionUP = true), в таймере вы проверяете свои логические значения и chenge x2/y2 и заканчиваете в конце таймера таймера и события прокрутки, добавляете обновление картинки. Если я понимаю, что вы делаете, вот и все. :) – Baro

Смежные вопросы