[C#] Impostrare immagine in PictureBox con Random

domenica 21 marzo 2010 - 13.36

Anonimo Profilo | Senior Member

Salve a tutti.... Avrei bisogno di cambiare l'immagine di una picturebox in base ad un Random.. mi spiego... dovrei generare un numero a 0 a 52 e, inbase a quello che ho generato (Esempio n: 5) caricare l'immagine .png corrispondente (cioè il file "5.png" che si trova nella cartella Resource).

Ho provato a generare un numero, poi a creare il precorso in una stringa:

Random gen = new Random();
int n = gen.Next(1,53);

string percorsoImmagine = n.ToString() + ".png";

Adesso (non sono sicuro che il percoso sia valido comunque...) imposto l'immagine alla picturebox "guest1"

pbxGuest1.Image = Simulazione_Vincite.Properties.Resources.percorsoImmagine;

E' ovvio che per Visual Studio l'immagine "percorsoImmagine" che si aspetta non esiste e quindi mi da un'errore...

Come posso far caricare un'immagine da un precorso dato in stringa ??? Grazie In anticipo....

aiedail92 Profilo | Expert

Ciao

Per ottenere una risorsa, devi usare il metodo GetObject dell'oggetto ResourceManager (in Properties.Resources):

Random rndGen = new Random(); // Di solito il nome della risorsa non contiene ".png" alla fine, quindi non devi metterlo string resName = rndGen.Next(1, 53).ToString(); // Se la risorsa non viene trovata, img diventa null Image img = Properties.Resources.ResourceManager.GetObject(resName) as Image; // Usa la risorsa... pbxGuest1.Image = img;

Luca

Anonimo Profilo | Senior Member

Ho cercato di applicare il tuo consiglio... ma mi pare di capire che il metodo GetObject è solo per Visual Basic o sbaglio?? Come potrei fare (usando questo metodo se è lecito ) nel mio caso???

Grazie di tutto...

aiedail92 Profilo | Expert

Solo per Visual Basic...? Il codice che ti ho postato è C#, l'hai provato e ti dà qualche errore o non l'hai provato proprio?

Luca

Anonimo Profilo | Senior Member

Non riuscivo proprio a capire come utilizzare il metodo che mi hai coinsigliato... Adesso però stò utilizzando questa riga ripresa dal codice generato da visual studio però mi viene segnalato un'errore...

pbxGuest1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.Retro")));

aiedail92 Profilo | Expert

La risorsa esiste? Il nome sei sicuro che è quello? Che errore ti dà?

Luca

Anonimo Profilo | Senior Member

Allora... ho ripreso in mano il tuo codice.. solo che non capisco.. l'immagine non viene caricata... eppure io l'ho importata nella cartella del progetto...
Ho sbagliato percorso??? dove la devo mettere?? Scusami per il tempo che ti faccio perdere e grazie Infinite....

aiedail92 Profilo | Expert

L'hai aggiunta alle risorse del progetto?

Luca

Anonimo Profilo | Senior Member

Oh certo.. per essere sicuro ho creato un progettino veloce e.... torna tutto perfetto.... Grazie tantissime anche perchè ho notato che aulcuno ha usato delle librerie...
sono sicuro che questo metodo è molto più veloce e adatto al ciò che volgio fare io...

Grazie Ancora e a presto !!!!!!!

aiedail92 Profilo | Expert

Di niente

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5