nightwolf (Normal User)
Pro
Messaggi: 149
Iscritto: 14/09/2010
|
|
|
nightwolf (Normal User)
Pro
Messaggi: 149
Iscritto: 14/09/2010
|
questa è l immagine con l errore
|
|
nightwolf (Normal User)
Pro
Messaggi: 149
Iscritto: 14/09/2010
|
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.
|
|
nightwolf (Normal User)
Pro
Messaggi: 149
Iscritto: 14/09/2010
|
questa è la mia schermata del mio progetto, e la bussola dovrebbe andare dove è contasseganta
Ultima modifica effettuata da nightwolf il 05/03/2024 alle 14:02 |
|
Carlo (Member)
Guru
Messaggi: 1364
Iscritto: 29/01/2018
|
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):
Codice sorgente - presumibilmente VB.NET |
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.
Codice sorgente - presumibilmente VB.NET |
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 Ultima modifica effettuata da Carlo il 05/03/2024 alle 19:14
in programmazione tutto è permesso |
|
Thejuster (Admin)
Guru^2
Messaggi: 2316
Iscritto: 04/05/2008
|
se può interessarti ho fatto proprio un controllo " A Gratis"
Normalmente chiederei soldi per sviluppare controlli come questi ma dettagli.
https://youtu.be/j-zuFawpWQw
lo sfarfallio della lancetta quando muovo il quadrante completo (gli ultimi pulsanti in basso ) è voluta apposta.
Non sò, mi piaceva così
ovviamente e ridimensionabile in modo perfetto.
ovvero che mantiene le proporzioni.
Codice sorgente - presumibilmente C++ |
/// <summary> /// Ridimensiona mantenendo proporzione pari /// </summary> /// <param name="value">Dimensione attuale</param> /// <returns>Restituisce dimensione corretta</returns> private int FixSize(int value) { if(value % 2 == 0) { return value; } else { if ((value + 1) % 2 == 0) { return value + 1; } return value - 1; } }
|
mentre un enumeratore per le posizioni.
infatti basta fare tipo
Codice sorgente - presumibilmente C# / VB.NET |
private void button6_Click(object sender, EventArgs e)
{
bussola1.Direzione = CtrBussola.Bussola.Direction.Sud;
}
|
che il quadrante ruota a sud. (Seconda fila dei pulsanti nel video)
Mentre per la 3° fila
semplicemente
Codice sorgente - presumibilmente Plain Text |
o meglio ancora modificabile direttamente dalle proprietà
Ultima modifica effettuata da Thejuster il 05/03/2024 alle 22:17
|
|
nightwolf (Normal User)
Pro
Messaggi: 149
Iscritto: 14/09/2010
|
grazie mille, lo terrò in considerazione
Postato originariamente da Thejuster:
se può interessarti ho fatto proprio un controllo " A Gratis"
Normalmente chiederei soldi per sviluppare controlli come questi ma dettagli.
https://youtu.be/j-zuFawpWQw
lo sfarfallio della lancetta quando muovo il quadrante completo (gli ultimi pulsanti in basso ) è voluta apposta.
Non sò, mi piaceva così
ovviamente e ridimensionabile in modo perfetto.
ovvero che mantiene le proporzioni.
Codice sorgente - presumibilmente C++ |
/// <summary> /// Ridimensiona mantenendo proporzione pari /// </summary> /// <param name="value">Dimensione attuale</param> /// <returns>Restituisce dimensione corretta</returns> private int FixSize(int value) { if(value % 2 == 0) { return value; } else { if ((value + 1) % 2 == 0) { return value + 1; } return value - 1; } }
|
mentre un enumeratore per le posizioni.
infatti basta fare tipo
Codice sorgente - presumibilmente C# / VB.NET |
private void button6_Click(object sender, EventArgs e)
{
bussola1.Direzione = CtrBussola.Bussola.Direction.Sud;
}
|
che il quadrante ruota a sud. (Seconda fila dei pulsanti nel video)
Mentre per la 3° fila
semplicemente
Codice sorgente - presumibilmente Plain Text |
o meglio ancora modificabile direttamente dalle proprietà
|
Ultima modifica effettuata da nightwolf il 05/03/2024 alle 23:56 |
|
nightwolf (Normal User)
Pro
Messaggi: 149
Iscritto: 14/09/2010
|
grazie mille a tutti per le molteplici spiegazioni e i consigli che mi avete dato, adesso il tutto funziona, lo adatto al mio progetto e non mi resta che far si che arduino invii tramite la serialport le relative coordinate. più avanti farò un video sul relativo progetto da farvi vedere.
|
|