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 - Disporre picturebox in cerchio
Forum - Visual Basic 6 - Disporre picturebox in cerchio

Avatar
evil ways (Normal User)
Rookie


Messaggi: 26
Iscritto: 06/01/2010

Segnala al moderatore
Postato alle 19:42
Venerdì, 29/10/2010
Salve mi qualcuno pottrebbe aiutarmi, dovrei creare un programma che inserendo in input il numero di picture box il programma le dispone automaticamente in cerchio.

grazie

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 15:18
Sabato, 30/10/2010
le picturebox le devi disporre basandoti sull'equazione della circonferenza...
qui più che altro si tratta di un problema matematico...
http://it.wikipedia.org/wiki/Circonferenza

Comunque le picture quando le disponi, le crei direttamente? se si mostra il codice..

PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 22:45
Sabato, 30/10/2010
metti:
    Picture1(i).Left =  X

    Picture1(i).Top =  Y

Adesso, per disporre le picture devi dargli le giuste coordinate.. e come già detto ti devi basare sull'equazione della circonferenza... ma giustamente quale circonferenza?

bhè te la devi ricavare te, dato che sei tu che devi deciderne raggio e posizione

PM
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 18:21
Domenica, 31/10/2010
Premesso che:
- ho utilizzato il programma contenuto in Orologio scaricato proprio da "www.PieroTofy.it";
- e che molti passaggi non li ho ben compresi,
ho approntato il listato seguente che mi sembra funzionare .
Spero che possa essere d'aiuto.
Sal47
----------------
Option Explicit
Const Pi As Double = 3.14159265358979
Dim n, k As Integer
________________________________________
Private Sub Form_Activate()
' se le divisioni sono poche si possono aumentare le dimensioni dell'Image
n = Val(InputBox("Quante immagini vuoi disporre sulla circonferenza?"))
k = 3 * n
End Sub
__________________________
Private Sub Form_Click()
Dim Divisioni As Integer
'Me.Circle (0, 0), 4200
'Me.PSet (0, 0), vbBlack
' if Divisioni =60 then Pi/180
' if Divisioni =30 then Pi/90
' if Divisioni =20 then Pi/60
' if Divisioni =10 then Pi/30
img(0).Visible = False
For Divisioni = 1 To n
lnSec.X2 = Sin(Divisioni * 6 * Pi / k) * 4400
lnSec.Y2 = Cos(Divisioni * 6 * Pi / k) * 4400
Me.PSet (lnSec.X2, lnSec.Y2), vbRed
'Line (lnSec.X1, lnSec.Y1)-(lnSec.X2, lnSec.Y2)
' forse meglio controllo Image (anzichè PictureBox) che ha la proprietà stretch
Load img(Divisioni)
     img(Divisioni).Left = lnSec.X2
     img(Divisioni).Top = lnSec.Y2
     img(Divisioni).Visible = True
Next Divisioni
End Sub
________________________________
Private Sub Form_Load()
'img(0).Width = 375
'img(0).Height = 375
Me.Scale (-5500, 5500)-(5500, -5500)
lnSec.X1 = 0
lnSec.Y1 = 0
End Sub
_______________________________
Private Sub Form_Resize()
Me.Refresh
    If Me.Width > 10590 Then Me.Width = 10590 '9330
Me.Height = 9330
Form_Load
End Sub
---------

PM
Avatar
evil ways (Normal User)
Rookie


Messaggi: 26
Iscritto: 06/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 17:06
Sabato, 30/10/2010
Codice sorgente - presumibilmente VB.NET

  1. For i = 1 To 20
  2.    
  3.     Load Picture1(i)
  4.    
  5.     Picture1(i).Left =  n
  6.    
  7.     Picture1(i).Top =  n
  8.        
  9.     Picture1(i).Visible = True
  10.    
  11.     n = n + 100
  12.    
  13.  
  14.  
  15. Next


con questo codice le mette in cascata io dovrei adattarlo per farle disporle in circonferenza

PM
Avatar
evil ways (Normal User)
Rookie


Messaggi: 26
Iscritto: 06/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 10:49
Martedì, 02/11/2010
Ho provato il codice che mi avete consigliato e non funziona sinceramente non riesco a capirne il funzionamento

PM
Avatar
Sal47 (Normal User)
Pro


Messaggi: 96
Iscritto: 05/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 12:40
Martedì, 02/11/2010
Prova il listato che ho postato inserendo nel Form:
- una Image che chiamerai img e le assegnerai come indice 0 cosi risulterà img(0);
- una linea lunga a piacere che chiamerai lnsec.
Saluti.

PM