Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 06 Maggio 2013, 19:34:43

Titolo: ripulire un picture box dalla precedente immagine
Inserito da: allegfede - 06 Maggio 2013, 19:34:43
se carico un'immagine cosi':
Codice: [Seleziona]
PictureBox_Logo.Picture = picture.Load(Dialog.Path)
PictureBox_Logo.Tag = Dialog.Path

come faccio a rimuoverla dal controllo?
io avevo provato cosi' ... ma non va' (nessun errore, sempicemente l'immagine persiste :D)

Codice: [Seleziona]
PictureBox_Logo.Picture = Null
PictureBox_Logo.Refresh
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: vuott - 06 Maggio 2013, 20:43:28
La questione (anche trattata nella WIKI: http://www.gambas-it.org/wiki/index.php?title=Cancellare_una_immagine_in_una_PictureBox_o_in_una_ImageView), da te sollevata, è alquanto strana: ho fatto la prova del tuo codice, e l'immagine sparisce. Inoltre, non risulta necessaria la funzione Refresh .


Vorrei riportare anche la risposta di Minisini ad una domanda simile:

« PictureBox1.Picture = Null

PictureBox1.Picture.Clear only clears the contents of the picture
returned by the property, which is somewhat a copy of the internal
picture of the PictureBox which stays unchanged.

Regards,

--
Benoît Minisini
»
http://www.mail-archive.com/gambas-user@lists.sourceforge.net/msg21742.html
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: Picavbg - 06 Maggio 2013, 23:57:11
funziona anche con
Codice: [Seleziona]
PictureBox_Logo.Delete
:ciao:
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: vuott - 07 Maggio 2013, 00:35:38
funziona anche con
Codice: [Seleziona]
PictureBox_Logo.Delete


...ma il metodo .Delete, in vero, fa sparire l'immagine, poiché distrugge la PictureBox. Infatti se, dopo aver applicato questa funzione, si ritenta di caricare un'immagine, si ottiene un avviso d'errore: Invalid object ! 
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: Picavbg - 07 Maggio 2013, 08:39:01
Scusate, non ci avevo fatto caso. Ho fatto soltanto una prova veloce.  :-\
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: Picavbg - 07 Maggio 2013, 09:34:41
Però, leggendo il post di vuott, ho provato così:

Codice: [Seleziona]
Public Sub PictureBox1_DblClick()
  PictureBox1.Picture.clear
  PictureBox1.Picture = picture.load(User.home & "/mont/dativari/Documenti_Vari/iconcff.png")
End

Ed ecco le due immagini.

Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: Picavbg - 07 Maggio 2013, 09:40:22
Dimenticavo: Buon caffè anche a voi.
(http://image.forumfree.it/1/0/0/4/2/7/8/1/1364209825.png)
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: allegfede - 07 Maggio 2013, 16:57:59
oggetto.delete mi distrugge l'oggetto (come dovrebbe) .... gli altri non refreshano l'oggetto ..... provo a caricargli un'immagine nulla della libreria
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: allegfede - 07 Maggio 2013, 17:41:23
oggetto.delete mi distrugge l'oggetto (come dovrebbe) .... gli altri non refreshano l'oggetto ..... provo a caricargli un'immagine nulla della libreria

... forse mi sono spiegato male .......

mi sarebbe servito che  picturebox.clear eliminasse l'immagine dal form e riportasse il rettangolo al colore di base (grigiolino per le mie impostazioni).

Ho risolto con una immagine png di 9x9 pixel nella classe data che carico alla pressione del tasto clear e metto picturebox.tag="" :D

puo' andare comunque, grazie
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: Picavbg - 07 Maggio 2013, 19:11:12
... forse mi sono spiegato male .......

mi sarebbe servito che  picturebox.clear eliminasse l'immagine dal form e riportasse il rettangolo al colore di base (grigiolino per le mie impostazioni).
Hai ragione, la proprietà ".Clear" lascia inalterato il contenuto della PictureBox. La soluzione la suggerisce Minisini sempre nello stesso post di vuott:
Codice: [Seleziona]
PictureBox1.Picture = Null
che poi è quello che avevi già comunicato tu nel post d'apertura.

Se tu aggiungi il bordo alla PictureBox, dopo l'esecuzione dell'istruzione poc'anzi indicata, potrai vedere l'oggetto ripulito dell'immagine, ma col colore di fondo di default o quello eventualmente da te impostato.
Scusa per il disordine che ho generato.  :-[
 :ciao:
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: vuott - 07 Maggio 2013, 23:43:59
mi sarebbe servito che  picturebox.clear eliminasse l'immagine dal form e riportasse il rettangolo al colore di base (grigiolino per le mie impostazioni).

Ho risolto con una immagine png di 9x9 pixel nella classe data che carico alla pressione del tasto clear e metto picturebox.tag="" :D

puo' andare comunque, grazie

Potrà pure andare, ....d'accordo, però un problema c'è, poiché il valore Null, assegnato alla proprietà .Picture, avrebbe dovuto risolvere (e normalmente risolve) proprio come tu desideravi.   :-\
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: md9327 - 08 Maggio 2013, 11:36:45
potresti disegnarci sopra un rettangolo bianco (o del colore che preferisci), usando le apposite istruzioni di disegno... oppure usare appunto un'immagine in memoria, disegnata con lo stesso sistema, dopodiche la associ alla picturebox...
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: vuott - 08 Maggio 2013, 12:31:56
potresti disegnarci sopra .....
...resta comunque il fatto che a lui la cancellazione dell'immagine mediante l'assegnazione del valore Null alla proprietà .Picture stranamente non funziona.   :-\
Fossi in lui, cercherei di capire il perché.
Titolo: Re: ripulire un picture box dalla precedente immagine
Inserito da: allegfede - 08 Maggio 2013, 13:52:55
c'hai ragione vuott .... ma come avrai intuito sono pigro  ;D

mooolto pigro .... e se cosi' va' .... ciccia :D