Login Register
domenica 5 settembre 2010
 
Forums
I Forum di WPF Tips & Tricks
aggiungere una immagine ad un bottone
Last Post 31 lug 2010 06:03 by Alessandro Del Sole [MVP]. 10 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages Resolved
DarkMightyWolf
Basic Member
Basic Member
Posts:21
Avatar

--
29 lug 2010 10:51  
mi sono bloccato!! qualcuno mi può dire come si aggiunge un immagine ad un bottone presente su una toolbar in wpf??

grazie ^^
Alessandro Del Sole [MVP]
Team
Team
Posts:65
Avatar

--
29 lug 2010 12:03  
<ToolBar>
<ToolBar.Items>
<Button>
<Button.Content>
<Image Source="TuoFile.png"/>
</Button.Content>
</Button>
</ToolBar.Items>
</ToolBar>

Ovviamente il tutto è semplificato, devi aggiustarlo per come serve a te
Gianni Giaccaglini
Basic Member
Basic Member
Posts:41
Avatar

--
29 lug 2010 01:48  
Sono Gianni Giaccaglini.
In linea di principio la risposta è ineccepibile, ove si prende "TuoFile.npg" come segnaposto, diciamo, generico. Secondo quanto emerso da un altro post consimile - relativo all'analoga proprietà ImageSource che serve in altro contesto - alla letterab " TuoFile.npg" viene rigettato e solo indicando il pathname completo - es. "C:\MieImmagini\TuoFile.png - si ottiene lo scopo, con la soddisfazione dell'immediata apparizione della figurina nel panel Progettazione.

In altri testi più o meno sacri trovo cose come "Immagini/Figura.jpg" o "Images/Figura.jpg", con identica frustrazione.
Un amico, l'ottimo Scarati, nell'altro post succitato, mi ha suggerito di inserire l'immagine nella cartella Images (o Immagini?) A LIVELLO DI PROGETTO, sempre senza necessità di pathname completo, men che meno di DRIVE... Ahimé, nella mia pochezza di semi-esperto, non sono riuscito nella banale ma improba impresa. Ho anche chiesto DOVE si trovano le fatidiche cartelle predette e, se occorre, COME e DOVE crearle (nella subdir Debug o nella Release? niente da fare).

CONCLUDO.
I casi sono due:
A) WPF allo stato pretende comunque la dir. completa (come l'analoga tag <IMG ... > del babbo XML di cui XAML è figliolo ?);
B) Esistono SEGRETI che è importante svelare al maggior nomero di gente, anche in mezzo al guado del learning tour.

Saluti a tutti
DarkMightyWolf
Basic Member
Basic Member
Posts:21
Avatar

--
29 lug 2010 02:12  
adesso provo! ci ringrazio molto!!
DarkMightyWolf
Basic Member
Basic Member
Posts:21
Avatar

--
29 lug 2010 02:17  
Allora...
Gianni ti dico:

quello che ha scritto alessandro ovviamente è giusto
e
si devi mettere il percorso completo, oppure puoi mettere come in html/xml il
<Image Source="./percorso/immagine.png" />

e così funziona perfettamente^^

Vi ringrazio moltissimo entrambi.

Max
Gianni Giaccaglini
Basic Member
Basic Member
Posts:41
Avatar

--
29 lug 2010 03:07  
Quel che ha trovato Max è interessante. Premesso che sto per uscire e non ho tempo per prove, ritengo che tale soluzione risolva il problema del Drive ma non quella del resto del pathname.
Ora il problema da cui ero partito si riferiva al deployment dell'applicazione. L'aspettativa, probabilmente ingenua, era che fosse possibile - almeno con la compilazione Click Once - inserire il risultato espresso dalla cartella bin\release OVUNQUE e, di conseguenza, la sintassi <Image Source="MiaFigura.jpg"> funzionasse senza storie. Non è forse questa la sintassi del DOS, che, in assenza di pathname completo, accetta automaticamente il percorso CORRENTE?
Un uccellino mi sussurra che si può ricorrere all'URI... Comunque il discorso va approfondito e chiarito una volta per tutte, se possibile...
Gianni
Alessandro Del Sole [MVP]
Team
Team
Posts:65
Avatar

--
29 lug 2010 04:02  
E' evidente che il mio "TuoFile.png" è un placeholder del tutto generico, anche perché l'amico Max non ha chiesto come si assegna l'origine di un'immagine, ma come mettere un'immagine in un pulsante... altrimenti mi sarei prolungato nella spiegazione.

Image.Source funziona con Uri, assoluti, relativi o packed Uri. Un Uri assoluto può essere anche il pathname completo di un file, mentre è relativo se metto un'immagine in una cartella del progetto, es. Immagini, a cui punto semplicemente scrivendo Source="/Immagini/TuoFile.png".

Se l'immagine è incorporata nelle risorse, allora si usano i packed Uri. E' vero che WPF è vasto così come è vero che tante cose vanno spiegate, ma a volte una buona ricerca mirata su Internet aiuta a risolvere i problemi. Intanto si può partire dalla documentazione della proprietà di interesse:

http://msdn.microsoft.com/en-us/lib...ource.aspx

E già da qui si capisce agevolmente che si tratta di Uri. Poi lì ci sono altri link che rimandano all'utilizzo e al popolamento della proprietà. Qui i packed Uri:
http://msdn.microsoft.com/en-us/lib...70069.aspx

Poi, cercando cercando, c'è questo mio post:
http://community.visual-basic.it/al...26594.aspx

Anche dagli esempi della documentazione MSDN si evince che non si tratta di stringhe che puntano a percorsi, ma di oggetti System.Uri
Gianni Giaccaglini
Basic Member
Basic Member
Posts:41
Avatar

--
30 lug 2010 09:04  
Questa sì che è una bella notizia!
Ora hai fatto TRENTA con la seguente indicazione tratta dal tuo ultimo posto citato:
<Image Name="Image1" Stretch="Fill"
Source="/WpfApplication1;component/Images/IMG051.jpg" />

Se potessi fare TRENTUNO, non potreste indicare i PASSI spiccioli PRIMA di impostare Source="...." ? (*) Ovvero:
1. creare la cartella Images (come?, Dove? sono queste le mosse cruciali, credo);
2. inserirvi la/le immagini desiderate;
3. ecc.

Te ne saranno grati in MOLTI. Inoltre potresti - tu o altri collaboratori qualificati - pubblicare un articolo completo sul tema. Magari completandolo con condice a run-time in grado di inserire dinamicamente immagini scelte nella fatidica cartella Images. Insomma una sorta di slide show: sarebbe allettante, se possibile, non trovi?

(*) Io speriamo che me la cavo anche da solo, studiandomi Uri semplici e impaccati. Mea culpa meaculpa, ma il guaio per un applicativista come me è che la fantasia non manca ma gli scogli in cui incappo sono le sottigliezze sintattiche. Mamma Microsoft non potrebbe renderle più "trasparenti"?
Alessandro Del Sole [MVP]
Team
Team
Posts:65
Avatar

--
30 lug 2010 09:37  
Ma nel mio post sul blog è già indicato che Visual Studio 2010 genera la cartella Immagini, vi copia i file dentro e li incorpora come risorse....
Hai provato a ripetere i passaggi da Visual Studio, andando oltre la lettura?
Gianni Giaccaglini
Basic Member
Basic Member
Posts:41
Avatar

--
30 lug 2010 12:59  
Finalmente ho fatto la prova (abbi pazienza sto lavorando "a spizzichi" dovendo badare a una nipotina), sul mio nuovo notebook dotato di Windows 7 e Visual Studio 2010 mentre sul mio desktop attrezzato con Win XP e VS 2008, ma con moltissima altra roba... (è tempo di migrar? Sì ma a Settembre come disse il Poeta)
POSITIVA!
Mi sono così reso conto che la faccenda dipende dall'EDIZIONE di Wpf, infatti:
- solo con la 2010 la proprietà Source presenta sulla destra i famosi tre puntini, cliccando sui quali tutto va in discesa;
- l'eseguibile così realizzato si lascia lanciare anche da una chiavetta USB;
- ma se porto la chiavetta sul mio PC ottengo un rifiuto motivato dall'assenza "nei paraggi" del Framework 4.0.

COMMENTI FINALI
A) Si direbbe che lassù a Redmond qualcuno mi ama recependo il desiderio, non solo mio, di una maggior trasparenza;
B) E i poveretti con non hanno la 4.0? Io speriamo che se la cavino scoprendo il da farsi anche in un più arretrato environment.
Alessandro Del Sole [MVP]
Team
Team
Posts:65
Avatar

--
31 lug 2010 06:03  
Chi non ha la 4.0 può sempre scaricarsi le edizioni Express gratuite di VS 2010 (www.microsoft.com/express), senza dimenticare che .NET stesso rimane gratuito.
You are not authorized to post a reply.

Active Forums 4.2
  
 
© 2009-2010 WPF Tips&Tricks Team - Visual Basic Tips&Tricks Network