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
Guida al Visual Basic .NET - ImageList

Guida al Visual Basic .NET

Capitolo 65° - ImageList

<< Precedente Prossimo >>

In fase di progettazione, se si vogliono aggiungere immagini a controlli come Button, Label, SplitButton, ToolBox et similia è sufficiente selezionare la proprietà Image (o BackgroundImage), aprire la finestra di dialogo mediante pressione sul pulsante che appare, scegliere quindi un file immagine dall'Hard Disk o dalle risorse del progetto, e confermare la scelta per ottenere un effetto ottimo. Tuttavia, ciò non è sempre possibile, ad esempio se a run-time si vogliono associare determinate icone a elementi di una lista che non è possibile prevedere durante la stesura del codice. In situazioni simili, il controllo che viene in aiuto del programmatore si chiama ImageList. Esso costituisce una lista, ordinata secondo indici e chiavi, che contiene immagini precedentemente caricate dallo sviluppatore: tutte queste vengono ridimensionate secondo una dimensione fissata dalle proprietà del controllo e hanno una limitazione di profondità di colore, sempre predeterminata, da 8 a 32 bit. Per ottenere effetti di grande impatto, è consigliabile utilizzare formati ad ampio spettro di colore e con trasparenza come il Portable Network Graphics (*.png), oppure il JPEG (*.jpg) se si vuole risparmiare spazio pur conservando una discreta qualita'; il formato ideale è 32x32 pixel per le icone grandi e 22x22 o 16x16 in quelle piccole come nei menù a discesa o nelle ListView a dettagli.
Il meccanismo che permette ai controlli di fruire delle risorse messe a disposizione da un'ImageList è lo stesso usato dal ContextMenuStrip. Ogni controllo con interfaccia che supporti questo processo, dispone di una proprietà ImageList, che deve essere impostata di conseguenza a seconda della lista di immagini che si vuole quel controllo possa utilizzare. Successivamente, i singoli elementi al suo interno sono dotati delle proprietà ImageIndex e ImageKey, che permettono di associarvi un'immagine prelevandola mediante l'indice o la chiave impostata. Ecco alcuni esempi di come potrebbero presentarsi controlli di questo tipo:

ImageList.jpg

ImageList su ListView


ImageList2.jpg

ImageList su TreeView


ImageList3.jpg

ImageList su TabControl

 

Reperire le icone

Indubbiamente questo controllo offre moltissime possibilità di personalizzare la veste grafica dell'applicazione a piacere del programmatore, tuttavia se non si dispone di materiale adatto, il suo grande aiuto viene meno. Per questo motivo, darò alcuni suggerimenti su come reperire un buon numero di icone freeware o al limite sotto licenza lgpl (il che le rende disponibili per l'uso da parte di software commerciali). Come prima risorsa, c'è il programma AllExIcon, scritto da Mauro Rossi in Visual Basic 6, che potete trovare a questo indirizzo. Dopo averlo avviato, basta impostare la directory di ricerca su C:WINDOWSSystem32 (per sistemi operativi Windows XP) e il filtro su "*.dll". Verranno estratte moltissime belle icone, con la possibilità di salvarle in formato bitmap una alla volta o in massa. Dato il loro formato, anche convertite in JPEG, rimarrà un colore di sfondo, che può venire parzialmente eliminato impostando la proprietà ImageTransparency del form su Transparent o su White, rendendo quindi trasparente il loro sfondo. Come seconda possibilità ci sono alcuni pacchetti di icone reperibili dal web. Il primo che consiglio è "Nuvola", lo stesso che uso per le mie applicazioni, distribuito sotto licenza LGPL su questo sito; il secondo è "500.000 Icone!", una collezione di circa 8000 icone, divise in *.ico e *.png, messe insieme da svariate fonti del web: ogni risorsa è stata resa pubblica dal suo creatore e non ci sono limitazioni al loro uso. Il pacchetto può essere trovato solo attraverso eMule. La terza possibilità consiste nel cercare sulla rete insiemi di immagini messe liberamente a disposizione di tutti da qualche volenteroso designer, ad esempio su questa pagina di Wikipedia, dove, navigando tra le varie categorie, è possibile ottenere svariate centinaia di icone.

<< Precedente Prossimo >>
A proposito dell'autore

C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...