Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - posizionare label
Forum - Visual Basic 6 - posizionare label

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 13:32
Domenica, 12/04/2009
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:

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 13:58
Domenica, 12/04/2009
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:

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 14:03
Domenica, 12/04/2009
Tecnicamente ho capito, ma vallo  a fare....
esempio

coordinata del 1° label :

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

da qui come dovrei comportarmi?


PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 14:27
Domenica, 12/04/2009
Testo quotato

Postato originariamente da magicolotto:
Tecnicamente ho capito


Già è qualcosa :D

Ora ti posto un esempio

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 14:32
Domenica, 12/04/2009
aspetto grazie :heehee:

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 15:15
Domenica, 12/04/2009
io ti posto il procedimento ma me l'aspettavo più semplice, infatti non viene un cerchio perfetto:
Codice sorgente - presumibilmente VB.NET

  1. Dim x As Int32
  2.         Dim s As Double
  3.  
  4. Private Sub Button1_Click() 'ad esempio
  5. x = tre.X
  6. s = 1
  7. For Y As Int32 = tre.Y To sei.Y Step (sei.Y - tre.Y) / 22
  8.             'disegna label
  9.  
  10.             s -= 0.4
  11.             x += s
  12.         Next
  13.  
  14.         s = 1
  15.         x = nove.X
  16.  
  17.         For y As Int32 = nove.Y To sei.Y Step (sei.Y - nove.Y) / 22
  18.             'disegna label
  19.  
  20.             s -= 0.4
  21.             x -= s
  22.         Next
  23. 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: http://www.pierotofy.it/pages/download.php?filename=100p97 ...
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 il 12/04/2009 alle 15:38
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:43
Domenica, 12/04/2009
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.

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 18:53
Domenica, 12/04/2009
ci provo..


graziee

PM Quote
Avatar
magicolotto (Normal User)
Expert


Messaggi: 338
Iscritto: 21/01/2008

Segnala al moderatore
Postato alle 19:51
Domenica, 12/04/2009
no niente

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo