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
C# / VB.NET - Eliminare file in uso da una Picturebox
Forum - C# / VB.NET - Eliminare file in uso da una Picturebox

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 19:21
Mercoledì, 29/12/2010
Ciao :D

Ho un problema molto semplice da risolvere (almeno credo), di cui però non trovo la soluzione.

Ho una picturebox che visualizza un file usando image.fromfile, poi però ho la necessità di cancellare quel file dall' hard disk ma lasciando l' immagine nella picturebox.

Vi posto un codice:
Codice sorgente - presumibilmente Plain Text

  1. Schermo.PictureBox1.Image = Image.FromFile("C:\Img3.jpg")
  2.             Kill("C:\Img3.jpg")



Ho notato che non mi restituisce alcun errore, ma allo stesso tempo il file non viene cancellato, in altri programmi ho trovato la soluzione, ma in quel caso non era necessario leggere un file...

Come potrei fare? ;)

Ultima modifica effettuata da pinguino il 29/12/2010 alle 19:22
PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 19:27
Giovedì, 30/12/2010
Ragazzi, senza fare troppo casino, ho trovato la soluzione, eccola per chi avrà il mio stesso problema:

Semplicemente al posto di:

Codice sorgente - presumibilmente Plain Text

  1. PictureBox1.image = image.fromfile("C:\Img3.jpg")



ho messo:
Codice sorgente - presumibilmente Plain Text

  1. PictureBox1.Load("C:\Img3.jpg")



In questo modo l' immagine è nella picturebox ma allo stesso tempo il file non è in uso, e posso dunque eliminarlo senza problemi.

Grazie cmq a tutti :k:

P.S. Ad Andrea933 ho votato positivamente la sua risposta, è l' unica che può aiutare sul serio. :D

Ultima modifica effettuata da pinguino il 30/12/2010 alle 19:32
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 16:31
Giovedì, 30/12/2010
Ho fatto qualcosa che ti puo essere utile in c#, d'altronde gli oggetti sono gli stessi.

In entrambi i programmi devi includere System.IO e System.Drawing.

Nel primo programma leggi l'immagine e la copi negli appunti:

Codice sorgente - presumibilmente Plain Text

  1. Clipboard.SetImage(TuA_iMmAgInE);



Poi dal tuo secondo programma crei una variabile di tipo Image e ci leggi l'immagine

Codice sorgente - presumibilmente Plain Text

  1. Image immagine=Clipboard.GetImage();



Poi se buoi visualizzarlo nella tua picturebox, fai ad esempio

Codice sorgente - presumibilmente Plain Text

  1. PictureBox1.Image = immagine;




Il codice in VB e praticamente uguale ;)

PS: attento, xò che se uno fa ctrl+c o copia di qualcosa tra la scrittura e la lettura questo metodo non funziona più.

Se non vuoi rischiare, scrivi l'immagine in un file e poi caricala su immagine, senza caricare direttamente il file

Codice sorgente - presumibilmente Plain Text

  1. Image immagine=Image.FromFile(PeRcOrSo_TuA_ImMaGiNe);
  2. PictureBox1.Image = immagine;


Così facendo puoi eliminare il file..

Ultima modifica effettuata da il 30/12/2010 alle 16:36
PM
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 19:35
Mercoledì, 29/12/2010
Ti conviene copiare l'immagine in una cartella temporanea del PC e visualizzare quella copiata nella picturebox, in questo modo puoi eliminare l'originale senza problemi, e alla chiusura del programma o quando vuoi tu eliminare la copia.

P.S. la funzione kill non è molto orientata agli oggetti usa invece:
Codice sorgente - presumibilmente Plain Text

  1. IO.File.Delete("percorso")



Ultima modifica effettuata da walker93 il 29/12/2010 alle 19:37
PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 19:38
Mercoledì, 29/12/2010
Il problema è che il mio programma deve continuamente ricreare l' immagine, per questo è necessario che la cancelli ogni volta che viene visualizzata, dunque anche se creassi una cartella temporanea, il problema rimarrebbe...

su alcuni forum ho trovato Picturebox1.image.dispose(), ma quando lo uso mi da errore vb dicendomi parametro non valido...

Ultima modifica effettuata da pinguino il 29/12/2010 alle 22:28
PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 23:00
Mercoledì, 29/12/2010
Nessuna soluzione?, io sto continuando a provare in tanti modi diversi ma niente, mi si presenta sempre lo stesso problema...

PM
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 10:54
Giovedì, 30/12/2010
Testo quotato

Postato originariamente da pinguino:

... il mio programma deve continuamente ricreare l' immagine, per questo è necessario che la cancelli ogni volta che viene visualizzata...


Questo cosa significa??

Nella picturebox l'immagine da mostrare è variabile o è una scelta da te che non cambia mai?

PM
Avatar
pinguino (Ex-Member)
Pro


Messaggi: 172
Iscritto: 26/12/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 12:45
Giovedì, 30/12/2010
Praticamente il mio problema è questo: il programma che sto cercando di fare fà delle foto dello schermo, dopodichè le visualizzo in una picturebox di un altro programma, e per farlo, devo prima salvare la foto in C:\Img3.jpg, e deve essere un processo continuo, invece Img3.jpg rimane in uso dalla picturebox...
E' da ieri che cerco di capire come fare... Ma proprio non riesco a trovare una soluzione... :yup:

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
0
Down
V
Segnala al moderatore
Postato alle 13:40
Giovedì, 30/12/2010
forse invece di salvare l'immagine in un file ti conviene salvarla negli appunti così che ogni volta che la visualizzi viene caricata in RAM

PM
Pagine: [ 1 2 ] Precedente | Prossimo