View Full Version : [Vb.Net] Come Creare picturebox in fase di esecuzione??
ultraboss
24-03-2004, 19:24
Intendo creare delle picturebox all'interno di un form in fase di esecuzione.
In pratica ho realizzato un programma che mi cataloga i Cd musicali e vorrei avere in un form le miniature delle Cover dei Cd, ma non posso definire a priori il numero di picturebox(in fase di progetto) che mi serviranno.
Qualcuno aiuti un povero principiante... :(
The March
25-03-2004, 08:43
Originariamente inviato da ultraboss
Intendo creare delle picturebox all'interno di un form in fase di esecuzione.
In pratica ho realizzato un programma che mi cataloga i Cd musicali e vorrei avere in un form le miniature delle Cover dei Cd, ma non posso definire a priori il numero di picturebox(in fase di progetto) che mi serviranno.
Qualcuno aiuti un povero principiante... :(
Non so se ho capito bene quello che intendi... comunque mi sa che ti conviene riempire la pagina di picturebox e poi caricarci le immagini in fase di esecuzione... se non ci stanno tutte fai più pagine... o meglio fanne una e poi con dei tasti di scorrimento fai cambiare tutte le picturebox...
mi sa che è un po un megatapullo ma è l'unica cosa che mi viene in mente ora come ora...
Per creare picture box(o qualsiasi altro controllo) a runtime basta che istanzi la relativa classe.
Dim pb As New PictureBox
usando eventualmente la clausola "WithEvents" se necessario.
Una volta istanziata puoi usare il controllo normalmente.
Fossi in te però usarei l'oggetto Image e il suo metodo GetThumbnailImage() salvandomi le immagini ottenute in una imagelist
o direttamente,ad esempio,nella collection images di una ListView.
Es,
Dim Img, ThumbImg As Image
img.FromFile(<percorso file>)
ThumbImg=img.GetThumbnailImage(....)
'lstview =ListView creata in design time sulla tua form
LstView.LargeImageList.Images.Add(ThumbImg)
ecc..
The March
25-03-2004, 09:05
Originariamente inviato da Geen
Per creare picture box(o qualsiasi altro controllo) a runtime basta che istanzi la relativa classe.
Dim pb As New PictureBox
usando eventualmente la clausola "WithEvents" se necessario.
Una volta istanziata puoi usare il controllo normalmente.
Fossi in te però usarei l'oggetto Image e il suo metodo GetThumbnailImage() salvandomi le immagini ottenute in una imagelist
o direttamente,ad esempio,nella collection images di una ListView.
Es,
Dim Img, ThumbImg As Image
img.FromFile(<percorso file>)
ThumbImg=img.GetThumbnailImage(....)
'lstview =ListView creata in design time sulla tua form
LstView.LargeImageList.Images.Add(ThumbImg)
ecc..
azz... ero rimasto a vb 6 fatto molto male... ora nelle web form non ho mai usato questo genere di oggetti ma mi sembra veramente una figata!
In effetti il salto di qualità c'e' stato e pure grande..cmq si poteva fare quasi altrettanto anche in vb6 ;)
ultraboss
25-03-2004, 13:53
Beh Grazie raga x l'aiuto, non so se riesco a mettere in pratica il consiglio, non ho mai usato il metodo
GetThumbnailImage()
ma ci proverò, quella di inserire poi le miniature in un Listview è una buona idea.
Fammi capire Geen, in pratica ogni volta che l'utente inserisce un nuovo cd nella raccolta la sua cover viene assegnata ad una variabile di tipo image e poi questa viene passata ad un Listview ?
Se ho capito questo è un'ottimo metodo, provo a metterlo in pratica :)
Quello che non mi è chiaro è invece come creare PictureBox in fase di esecuzione, se io programmatore non so quante me ne occorrono, come faccio a dichiararne tante quante ne richiederà l'utente?
Se conoscete esempi pratici sparsi x La rete fatemelo sapere...
Originariamente inviato da ultraboss
Beh Grazie raga x l'aiuto, non so se riesco a mettere in pratica il consiglio, non ho mai usato il metodo
GetThumbnailImage()
nemmeno io ma non dovrebbe presentare grosse diffocoltà;)
E cmq esistono anche altri metodi per l'eventuale resize dell'immagine!
Originariamente inviato da ultraboss
Fammi capire Geen, in pratica ogni volta che l'utente inserisce un nuovo cd nella raccolta la sua cover viene assegnata ad una variabile di tipo image e poi questa viene passata ad un Listview ?
In linea di massima si.Nell'hard disk(o in un db) avrai salvato le immagini di ciascuna cover.Devi poi tenere traccia dell'associazione Album-cover(file di testo,tabella in un db vedi tu..).
All'avvio del programma cicli tra le tue associazioni album cover e applichi uno dei metodi sopra esposti.
Es. con associazione album-cover in una Datatable,per caricare le img devi fare
dim img as drawing.image
For Each row In ds.tables("ListaCover")
img.FromFile(row.item("PercorsoImg"))
'opzione 1
ImgList.Images.Add(img)
'opzione2
LstView.LargeImageList.Images.Add(img)
Next
Originariamente inviato da ultraboss
Quello che non mi è chiaro è invece come creare PictureBox in fase di esecuzione, se io programmatore non so quante me ne occorrono, come faccio a dichiararne tante quante ne richiederà l'utente?
Non e' chiaro come lo vuoi fare..in base a cosa l'utente deciderà quante richiederne?Se ho capito bene il problema la discriminante parerebbe essere di più la dimensione della form..
ultraboss
28-03-2004, 11:06
Ok ho capito come aggiungere le immagini delle cover, ma come vengono disegnate o disposte queste sul form ? e come dici tu Geen come ridimensionare il Form ? oppure questo avviene automaticamente con l'aggiunta della barra di scorrimento ?
Grazie x l'aiuto :)
Se usi una ListView il posizionamento e l'eventuale scrolling e' naturalmente gestito in automatico.L'uso di picture box create a runtime implica invece un posizionamento manuale e la gestione dell'eventuale scrolling/gestione a pagine.
Ed e' anche per questo che ti consiglio,salvo particolari esigenze,di usare una listview!
ultraboss
31-03-2004, 21:22
Ok grazie Geen :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.