Newsgroup: it.comp.dotnet
Titolo: [Wpf] Assegnre immagini a controlli Image dinamicamente

Ciao a tutti,
sto iniziando a muovere i primi passi in Wpf, utilizzando VB 2008 / VB 2010 
e ExpressionBlend 4.
In questo momento sto hostando un controllo ListBox Wpf in una Windows Form.
Questa ListBox utilizza un template per visualizzare dei dati, passati 
tramite binding; il template ha, tra le altre cose, dei controlli Image a 
cui vorrei "passare" delle immagini in base al valore di alcune proprieta'.
Ho quindi pensato di scrivere una classe che implementa la iValueConverter, 
da associare al binding del controllo stesso.
Questa classe, per come l'ho pensata, dovrebbe restituire una immagine in 
base al valore passato, e qui inizia il problema :-)
Ho delle immagini nelle mie risorse (ricordo che il progetto iniziale e' un 
WinForm), e quindi si tratta di tipi System.Drawing.Image, mentre il 
controllo Image Wpf accetta come ImageSource una 
System.Windows.Media.ImageSource. Come fare a prendere l'immagine della mia 
risorsa e farla restituire, dalla mia classe di conversione, come una 
ImageSource?
Oppure, se mi potete indicare una strada piu' corretta, va bene lo stesso 
:-)
Grazie e ciao... Maurizio 

 Grazie e ciao... Maurizio
Se capisco cosa vuoi fare, devi semplicemente convertirli estraendo la 
bitmap da Image di winform e creare un BitmapSource usando wpf.
-- 
Raffaele Rialdi  
http://www.iamraf.net
Weblog: 
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile 
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - 
http://www.ugidotnet.org/


vedi se può aiutarti:
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ea9a4e55-8905-4486-97fb-7981c2b75963/
ciao

bitmap da Image di winform e creare un BitmapSource usando wpf.
...
Beh, il passo che mi manca e' proprio quel "semplicemente" :-)
Avevo gia' trovato dei metodi che utiizzano Interop oppure il Memory Stream 
(per altro come scritto nei post mostrati nel link indicato da marcosabba), 
ma speravo in qualche cosa di piu' immediato.
Ho visto pero' che la cosa piu' immediata e' quella di aggiungere l'immagine 
direttamente sotto forma di file al progetto, senza passare per le risorse 
(come invece si fa con Winform).
Adesso sto diventando matto con questa che dovrebbe essere una cosa 
semplice.
Anzi, gia' che ci sono, chiedo anche questa cosa.... :-)
Nel mio progetto Wpf, ho aggiunto una cartella di nome Images, all'interno 
della quale ho inserito un file euro.png.
Sto quindi tentando di recuperare l'immagine stessa tramite:
Dim bmp As New System.Windows.Media.Imaging.BitmapImage(New 
Uri("Images/euro.png", System.UriKind.Relative))
ma questo non mi recupera l'immagine stessa, viene creata una BitmapImage, 
ma questa non contiene nulla.
Come mai?
Grazie a tutti, Maurizio


http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ea9a4e55-8905-4486-97fb-7981c2b75963/
...
In effetti avevo trovato delle soluzioni del genere, ma speravo ci fosse 
qualche cosa di piu' semplice.
Ciao e grazie... Maurizio 

 Grazie a tutti, Maurizio
prego ciao


Occhio che deve essere marcata come Resource e non embedded resource
...
Se vado a vedere le proprieta' della risorsa, alla voce "Operazione di 
compilazione" (ho il VS in italiano), c'e' proprio Resource.
In ogni caso, con la sintassi pack, viene sollevata un'eccezione di risorsa 
non trovata (Impossibile individuare la risorsa images/euro.png)
L'uri che ho usato e':
New Uri("pack://application:,,,/Images/euro.png")
Idee?
Grazie ancora.. Maurizio

 Grazie ancora.. Maurizio
Prego ciao


New Uri("pack://application:,,,/Images/euro.png")
...
Ho risolto, ma ancora non so bene il motivo.
La stringa che ho usato per creare il nuovo Uri e':
"pack://application:,,,/WpfControls;component/Images/euro.png"
ho dovuto quindi fare riferimento esplicitamente all'assembly WpfControls, 
benche' sia l'assembly che contiene, oltre naturalmente alla risorsa, la 
classe che implementa la iValueConverter. La classe e la risorsa immagne, 
quindi, sono nello stesso assembly; potrebbe dipendere dal fatto che 
l'assembly chiamante sia un altro (quello con la WinForm)?
Grazie ancora... Maurizio 

è case sensitive ... controlla ...
...
Si si, avevo pensato anche a questo e controllato.

 Grazie ancora... Maurizio
Prego
