Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
24/01/10 13:38
Rastyn

Ho la necessità di creare (uso Visual Basic 2008) una linea che si muove intorno ad un punto (tipo shermo radar per intenderci)e compi una rotazione ogni n secondi.

Ho creato all'interno dell'evento timer la creazione una volta di una linea con "formGraphics.DrawLine(myPen, larghezza, altezza, x, y)" la chiamata successiva la cancello , facendo un clear su tutto lo schermo "formGraphics.Clear(Color.DarkBlue)".
Come effetto grafico va bene, il problema è che insieme alla linea viene cancellato anche tutto il resto sul form. Lo schermo sono costretto a cancellarlo perchè altrimenti sullo stesso visualizzerei tutte le linee create ad istanti differenti.
Come posso inserire un linea, ad esempio come un oggetto, e farla ruotare tenendo fermo un suo estremo, senza la necessità di volta in volta di cancellare lo schermo.

Il mio evento ad ora lo gestisco così:


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Dim altezza As Integer
Dim larghezza As Integer

altezza = (Me.Height) / 2
larghezza = (Me.Width) / 2

Dim x As Integer
Dim y As Integer
Dim myPen As New System.Drawing.Pen(System.Drawing.Color.YellowGreen)
Dim formGraphics As System.Drawing.Graphics
formGraphics = Me.CreateGraphics()
myPen.Width = 0.5

If ctrl = 0 Then
x = larghezza + altezza * Math.Cos(angolo)
y = altezza + altezza * Math.Sin(angolo)
formGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias 'Smoothing della linea
formGraphics.DrawLine(myPen, larghezza, altezza, x, y) ' creo linea
ctrl = 1
ElseIf ctrl = 1 Then
formGraphics.Clear(Color.DarkBlue) 'cancello linea
angolo = angolo + 0.09
ctrl = 0
End If
myPen.Dispose()
formGraphics.Dispose()


Grazie
aaa
24/01/10 13:45
Alfonso
Sei OT! :ot:
Devi postare nella sezione .NET
aaa