Oppure

Loading
21/12/12 13:18
Sal47
Salve,
sono agli inizi in VB2010 express e in un mio semplice programma ho un form con WindowState=Maximized e una PictureBox1 in cui con il codice:
Private Sub PICTUREBOX1_Paint(ByVal sender As Object, ByVal e As
For Me.y = 20 To 1200 Step 10
e.Graphics.DrawLine(Pens.Red, 0, Me.y, 1050, Me.y)
Pausa(500)
Next Me.y
End Sub
la riempio di linee orizzontali.
Ho però la necessità di disegnare le linee una per volta con un intervallo di 1/2 secondo tra l'una e l'altra linea.
Ho inserito allora la sub:
Private Sub Pausa(ByVal DurataPausa As Integer)
Dim OrarioFinePausa As Date = Date.Now.AddMilliseconds(DurataPausa)
Do Until Date.Now > OrarioFinePausa
Application.DoEvents()
Loop
End Sub
e l'istruzione
Pausa(500)
Ma le linee vengono disegnate sempre tutte contemporaneamente e dopo un tempo che penso sia legato al Pausa(500).
Dove sbaglio? Potreste aiutarmi ?
Grazie e auguri di Buon Natale a tutto il Forum.
aaa
21/12/12 14:48
Qwertj
Usa System.Threading.Thread.Sleep(n_millisecondi)
aaa
21/12/12 17:33
Sal47
Salve,
ti ringrazio della risposta ma ti prego di darmi ancora un aiuto perchè ho provato:
- a inserire "System.Threading.Thread.Sleep(500)" subito dopo Public Class Form1 e ottengo la
segnalazione di errore sotto la parola System;
- a inserire l'istruzione subito dopo "e.Graphics.DrawLine(Pens.Red, 0, Me.y, 1050, Me.y)" del mio codice,
ma il risultato non cambia: le linee vengono disegnate sempre contemporaneamente e dopo un certo tempo.
Saluti
aaa
22/12/12 19:42
Qwertj
Ovviamente andava invece di Pausa(500)
Comunque ho sbagliato io perchè in ogni caso in quel contesto è inutile.
Quello su cui operi (e.Graphics) è un oggetto temporaneo che andrà a essere disegnato nella PictureBox alla fine della routine, quindi con tutte le modifiche già fatte e senza intervallo
Dovresti usare l'oggetto restituito da PICTUREBOX1.CreateGraphics() invece di e.Graphics
aaa
23/12/12 5:08
Sal47
Ciao Qwertj, ancora grazie.
Devo però assentarmi e potrò provare quanto mi suggerisci solo tra qualche giorno.
Ti faro sapere.
Buon Natale
aaa
28/12/12 13:25
Sal47
Ciao Qwertj,
il tuo suggerimento di usare "PICTUREBOX1.CreateGraphics()" funziona perfettamente; le linee vengono disegnate una dopo l'altra in funzione del tempo di pausa fissato.
Grazie ancora.
aaa
06/01/13 12:28
Qwertj
Lieto di esserti stato utile :k:
aaa