Oppure

Loading
12/04/09 11:32
magicolotto
Ciao ragazzi
ho una matrice di label da 1 a 90

label(1)---------------label(90)

qualcuno mi aiuterebbe a far posizionare le 90 label in modo circolare

a tal punto da farmare un cerchio


grazie



p.s. a mano no mi viene ...

per ora mi è uscito un rettangolo e non un cerchio :) :cheer:
aaa
12/04/09 11:58
ruggy94
te lo spiego a parole e vediamo se mi capisci :D
per spiegarmi meglio dato che non posso disegnare immagina un orologio, mi interessano le quattro posizioni

12
9 3
6

Vedi se riesci ad organizzarti con dei cicli for in modo che:
parti (ad esempio) dalla coordinata X del 12 (nell'orologio) fino ad arrivare alla X del 3. Nel ciclo (dove chiaramente la X aumenta) fai aumentare gradualmente la Y delle label. Poi vai dal 3 al 6 (quindi la X si va abbassando) e la Y va aumentando). Poi da 6 a 9 (la X si abbassa) e la Y va diminuendo. Poi dal 9 al 12 (aumenta la X) e la Y va crescendo.
Se hai dubbi chiedi pure :k:
aaa
12/04/09 12:03
magicolotto
Tecnicamente ho capito, ma vallo a fare....
esempio

coordinata del 1° label :

(Label(1).Left, Label(1).Top)

da qui come dovrei comportarmi?

aaa
12/04/09 12:27
ruggy94
Postato originariamente da magicolotto:
Tecnicamente ho capito

Già è qualcosa :D

Ora ti posto un esempio
aaa
12/04/09 12:32
magicolotto
aspetto grazie :heehee:
aaa
12/04/09 13:15
ruggy94
io ti posto il procedimento ma me l'aspettavo più semplice, infatti non viene un cerchio perfetto:
Dim x As Int32
        Dim s As Double

Private Sub Button1_Click() 'ad esempio
x = tre.X
s = 1
For Y As Int32 = tre.Y To sei.Y Step (sei.Y - tre.Y) / 22
            'disegna label

            s -= 0.4
            x += s
        Next

        s = 1
        x = nove.X

        For y As Int32 = nove.Y To sei.Y Step (sei.Y - nove.Y) / 22
            'disegna label

            s -= 0.4
            x -= s
        Next
End Sub

Allora...al posto di disegna label chiaramente va il codice per disegnare la label e poi il codice così come è non funziona, perchè trovi quei nove.Y, sei.y e tre.Y che daranno errore. Ti spiego cosa indicano. Dato che sei tu a scegliere la grandezza del cerchio, una volta che avrai deciso dove posizionare il 12, il 3, il 6 ed il 9 (parlo sempre del cerchio come un orologio), nove.Y (ad esempio) indicherà la coordinata Y del punto del 9, così come tre.Y indicherà la coordinata Y del punto dove si trova il 3 (ho fatto così perchè programmo in VB.NET e lì è un po' diverso).
Ti consiglio comunque di aspettare ancora un po' (se non è urgentissimo) che intanto cerco di trovare una soluzione più leggera e semplice. Tra poco posterò di nuovo per dirti se ho trovato una soluzione migliore.



EDIT: Scarica questo sorgente di orologio analogico proprio da pierotofy.it: pierotofy.it/pages/…
Utilizza la trigonometria (seno e coseno di angoli) per far girare le lancette intorno al proprio estremo (considerando le lancette come segmenti). Nel sorgente troverai due coordinate x e y. Queste coordinate girano in cerchio quindi prova a sfruttarle (chiaramente togliendo tutto il codice che non serve perchè fa parte dell'orologio) per posizionare le tue label. Dimmi se ci riesci. ;)
Ultima modifica effettuata da ruggy94 12/04/09 13:38
aaa
12/04/09 16:43
theprogrammer
Per posizionare oggetti su una circonferenza, il metodo piu' corretto e' disegnare il cerchio trigonometrico.

Usi il seno e il coseno in un ciclo da 0 a 2 pigreco radianti in un numero di passi che vuoi.
aaa
12/04/09 16:53
magicolotto
ci provo..


graziee
aaa