View Single Post
Old 20-04-2008, 12:56   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Questo tuo problema è abbastanza frequente nel passaggio da VB6 a .NET.
In VB6 una Form aveva una particolare proprietà AutoRedraw che permetteva di rendere persistente la grafica.
In .NET non mi risulta esista più tale proprietà ( che era molto comoda, anche se in particolari condizioni portava all'errore... ).

Una possibile soluzione consiste nell'inserire il codice che genera la grafica desiderata, direttamente nell'evento Paint della Form.
Esempio VB .NET 2003 ( 10 righe rosse orizzontali ) :

Codice:
   Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

        Dim penna As New System.Drawing.Pen(System.Drawing.Color.Red)
        penna.Width = 2

        Dim G As System.Drawing.Graphics
        G = Me.CreateGraphics()

        Dim i As Integer = 0
        For i = 1 To 10
            G.DrawLine(penna, 0, i * 50, 500, i * 50)
        Next

        penna.Dispose()
        G.Dispose()

    End Sub
Da quanto ho capito, se queste linee vengono generate di continuo in base a dati particolari ( Timer, Porte ecc... ), dovrai modificare il tuo codice in modo da forzare l'evento Paint ogni volta che dovrai disegnare una nuova linea...
In pratica devi distinguere e separare i dati in ingresso dalla loro rappresentazione grafica.
Il metodo .Refresh forza l'evento Paint.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso