L'immagine che hai postato dove clicchi EST ed in alto al centro trovi
W, è esatta se interpreti che quando clicchi EST vuoi che
N vada ad EST, inaftti così è la
N sta a 90° EST.
Se vuoi che quando clicchi EST al centro in alto vada la
E, devi invertire i testi negli if come ti ho scritto sul rem (riga 1 e riga 13):
ElseIf Label1.Text = "EST" Then ' oppure WEST
If avanzamento = 90 Then Exit Sub
destinazione = 90
' sceglie la direzione di rotazione
If avanzamento > 90 Then direzione = -vel Else direzione = vel
timer1.Enabled = True
ElseIf Label1.Text = "SUD" Then
If avanzamento = 180 Then Exit Sub
destinazione = 180
' sceglie la direzione di rotazione
If avanzamento > 180 Then direzione = -vel Else direzione = vel
timer1.Enabled = True
ElseIf Label1.Text = "WEST" Then ' oppure EST
If avanzamento = 270 Then Exit Sub
destinazione = 270
' normalizza
If avanzamento = 0 Then avanzamento = 360 ' forza la rotazione antioraria se si è a nord
' sceglie la direzione di rotazione
If avanzamento > 180 Then direzione = -vel Else direzione = vel
timer1.Enabled = True
End If
Postato originariamente da nightwolf:
un altra domanda, qual'è il centro della bussola, perchè se metto una picturebox, 600;600 di dimensioni, la bussola dovrebbe stare al centro della picturebox, ma non avviene, se ne sta nel suo angolo a in alto a sinistra come l immagine che posto. anche perche la bussola nel mio progetto dovrebbe stare in un posto ben stabilito che è quello dove metto la picturebox.
La dimensione della picturebox è ininfluente l'immagine viene sempre disegnata a partire dallo spigolo in alto a sinistra senza ridimensionamento.
Per procedere correttamente con il codice proposto, devi decidere la dimensione della picturebox e poi creare l'immagine
bussola.png di conseguenza.
Il codice è anche modificabile per fare in modo che l'immagine sia disegnata al centro della picturebox.
Bisogna usare il size della picturebox per modificare le coordinate di disegno su
e.Graphics.TranslateTransform.
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.TranslateTransform(cX + PictureBox1.Width / 2 - cX, cY + PictureBox1.Height / 2 - cY) ' posizione centro
e.Graphics.RotateTransform(avanzamento) ' rotazione in gradi
e.Graphics.DrawImage(bussola, -cX, -cY, dX, dY) ' dimensione 100%
End Sub
la picturebox deve avere una larghezza altezza pari, se non vuoi che translate trasform posizioni l'mmagine a mezzo pixel, degradandola