← Tutti i corsi
UI · Corso gratuito

Icone e immagini in Wisej.NET

Wisej.NET offre più di un modo per mettere un'immagine su un controllo, e funzionano tutti: è proprio per questo che un'applicazione finisce per usarli tutti per caso, finché nessuno sa più da dove arrivi una certa icona né perché sia sparita dopo il deploy. Questo corso per principianti mette ordine: per ogni immagine dai prima un nome al meccanismo, poi la assegni. Sette moduli partono dalle due pipeline — l'oggetto System.Drawing.Image che il server invia al browser come PNG e la stringa ImageSource che il client risolve — e dal contratto comune IImage con la ImageList condivisa. Da lì affronterai i formati bitmap e SVG con PictureBox, le sue modalità di ridimensionamento e LoadAsync; le immagini del tema, gli URL, il suffisso di ricolorazione degli SVG e l'Image Selector del designer; i pacchetti di icone ufficiali installati da NuGet; le risorse incorporate indirizzate con resource.wx; la costruzione di un tuo pacchetto di icone riutilizzabile; e infine i font di icone, il contenuto HTML e la policy delle icone in produzione, tutto costruito sul progetto IconDesk. È pensato per sviluppatori che conoscono le basi di C# e hanno già lavorato un po' con i controlli e il designer di Wisej.NET.

Usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili.

Inizia questo corso gratuito

Disponibile anche in: EnglishDeutschFrançaisEspañol

Programma

Modulo 1: Il modello delle immagini di Wisej.NET: Image, ImageSource e ImageList

Modulo 1 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sul modello delle immagini, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    Le due pipeline delle immagini: una proprietà Image che contiene un System.Drawing.Image che il server invia al browser come PNG, contro una stringa ImageSource o IconSource che il client risolve come URL, nome di un'immagine del tema, percorso resource.wx o elemento di un pacchetto di icone, più il contratto condiviso IImage e la ImageList che permette a molti controlli di condividere un unico insieme di immagini indicizzate per chiave. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoOggetto Image o stringa immagine: scegli quello giusto · 14 min

    Oggetto Image o stringa immagine: scegli quello giusto — una videoguida del Modulo 1, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Icone e immagini in Wisej.NET, Modulo 1. Wisej.NET offre diversi modi per mettere un'immagine su un controllo, quindi la prima decisione di questo corso è sempre quale meccanismo possiede l'immagine.

    La proprietà Image contiene un System.Drawing.Image che il server tiene in memoria e invia al browser come PNG. ImageSource contiene soltanto una stringa, quindi sul server non viene decodificato nulla. Entrambe riempiono lo stesso slot visivo del controllo, ed è proprio per questo che la scelta deve essere consapevole.

    Quella stringa può essere un URL relativo, un URL assoluto, il nome di un'immagine del tema o un percorso resource.wx, ed è il client a risolverla. I controlli che supportano le immagini condividono un unico contratto tramite IImage, quindi un pulsante, un'etichetta e una cella di griglia espongono la stessa famiglia di proprietà immagine.

    In IconDesk il pulsante Open riceve un oggetto immagine che il server legge da un file. Il pulsante Save riceve su ImageSource il nome di un'immagine del tema. Print e Delete condividono un'unica ImageList e scelgono la loro grafica per chiave, quindi è la lista a decidere che cosa disegnano quei due pulsanti.

    Una ImageList è indirezione più che archiviazione. Una chiave porta un significato che sopravvive al riordino, mentre un indice è solo una posizione e, appena la collezione cambia, punta in silenzio a una grafica diversa. Sostituisci l'immagine salvata sotto una chiave e ogni controllo che usa quella chiave la segue, senza toccare altro codice.

    L'etichetta di diagnostica chiede a ogni pulsante, tramite IImage, quale proprietà immagine è davvero valorizzata. Quella domanda intercetta un difetto comune: una stringa sorgente assegnata dopo una chiave immagine si prende lo slot, la chiave resta impostata e il controllo disegna la stringa. Leggere il controllo è meglio che tirare a indovinare.

    Eseguendo la pagina, quattro icone arrivano per quattro strade diverse e sembrano tutte ugualmente corrette. Solo il pulsante Open ha fatto decodificare un'immagine al server; le altre tre le ha risolte il browser. L'etichetta nomina il meccanismo dietro ciascuna, così la differenza si vede invece di essere data per scontata.

    Sostituire la grafica dietro la chiave delete aggiorna quel pulsante da solo, perché il controllo fa riferimento alla chiave e non all'immagine. Assegnare poi una stringa sorgente allo stesso pulsante cambia ciò che disegna, mentre la chiave resta impostata e ignorata.

    Lab uno: costruisci il pannello comandi di IconDesk con tutti e tre i meccanismi, aggiungi l'etichetta di diagnostica che legge ogni pulsante tramite IImage e annota l'effetto reale dello scambio di chiave e della doppia assegnazione.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 1 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Quattro pulsanti, quattro meccanismi di immagine · 45 min

    Obiettivo: Crea il progetto IconDesk e dagli un pannello comandi con i pulsanti Open, Save, Print e Delete, ciascuno con la propria icona portata da un meccanismo diverso. Carica btnOpen da un System.Drawing.Image lato server, assegna a btnSave.ImageSource un'immagine del tema indicata per nome e fai puntare btnPrint e btnDelete a un'unica ImageList condivisa tramite ImageKey. Aggiungi una label diagnostica che ispeziona ogni pulsante attraverso IImage e segnala quale meccanismo è davvero in gioco, poi cambia l'immagine memorizzata sotto una chiave della ImageList e verifica che tutti i controlli che usano quella chiave seguano il cambiamento. Deliverable: pannello comandi di IconDesk con i pulsanti Open, Save, Print e Delete; btnOpen che porta un System.Drawing.Image caricato sul server e btnSave un'immagine del tema indicata per nome su ImageSource; btnPrint e btnDelete che condividono un'unica ImageList tramite ImageKey invece che ImageIndex; label diagnostica che legge ogni pulsante attraverso IImage e nomina il meccanismo dietro la sua icona; nota di lab che registra che cosa è successo quando una chiave della ImageList è stata sostituita e quando due proprietà immagine sono state impostate sullo stesso pulsante.

Modulo 2: Bitmap, SVG e PictureBox: formati, dimensionamento e caricamento

Modulo 2 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sui formati e sulle modalità di ridimensionamento della PictureBox, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    Due elenchi di formati perché le pipeline sono due: bitmap, metafile, icon, JPEG, GIF e PNG attraverso System.Drawing e PictureBox.Image, contro jpg, jpeg, png, gif, svg e bmp che resource.wx e le immagini del tema accettano come stringhe, insieme alle modalità di ridimensionamento della PictureBox e ai punti di ingresso Load sincrono e LoadAsync asincrono. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoUn'immagine, sei modalità di ridimensionamento, due pipeline · 14 min

    Un'immagine, sei modalità di ridimensionamento, due pipeline — una videoguida del Modulo 2, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Modulo 2. La pagina ImageLab di IconDesk mette fianco a fianco un oggetto immagine e una stringa sorgente immagine su controlli PictureBox, così la differenza tra le due pipeline diventa qualcosa che puoi vedere.

    Chiedere quali formati supporta Wisej.NET non ha una risposta sola, e trattarla come tale provoca difetti veri. Un logo stirato fuori proporzione, una pagina che si blocca mentre scarica una foto remota e un file di icona che si rifiuta di caricarsi nascono tutti dal ridurre due elenchi di formati a uno solo.

    Tieni separati i due elenchi. Bitmap, metafile, icona, JPEG, GIF e PNG passano da System.Drawing e dalla proprietà Image. Il gestore delle risorse e le immagini del tema accettano come stringhe JPEG, PNG, GIF, SVG e bitmap. L'SVG appartiene alla pipeline delle stringhe; non è un formato di System.Drawing.

    Sei modalità di dimensionamento descrivono che cosa succede quando l'immagine e il box non vanno d'accordo. Normal taglia, AutoSize ridimensiona il box sull'immagine, CenterImage la centra, StretchImage la distorce, Zoom fa entrare tutta l'immagine e Cover riempie il box ritagliando ciò che avanza.

    Quattro controlli condividono un'unica stringa sorgente e differiscono solo per la modalità di dimensionamento, e questo isola la decisione sulla dimensione da quella sul caricamento. Il vecchio file di icona si sposta dalla stringa sorgente alla proprietà Image, perché icona e metafile appartengono alla pipeline di System.Drawing.

    LoadAsync recupera la foto del partner senza bloccare la pagina mentre arriva. Una sola icona vettoriale, indirizzata come stringa di risorsa, alimenta quattro dimensioni diverse a partire dallo stesso asset. Un gestore di report stampa poi, per ogni PictureBox, se l'immagine è arrivata da Image o da ImageSource.

    Eseguendolo, lo stesso asset viene tagliato da Normal, adattato da Zoom, ritagliato da Cover e appiattito da StretchImage. La foto remota è ancora in viaggio e la pagina resta usabile mentre si scarica, che è tutto il senso di caricarla in modo asincrono.

    La riga vettoriale resta nitida a sedici, ventiquattro, trentadue e quarantotto pixel. La piccola bitmap è già sfocata a trentadue, perché il browser sta ingrandendo pixel che non ci sono mai stati. Il report nomina poi la pipeline dietro ogni controllo, così nessuno deve indovinare.

    Lab due: costruisci ImageLab con quattro modalità di dimensionamento su un unico asset raster, una foto remota tramite LoadAsync, un'icona vettoriale a quattro dimensioni, il gestore del report e la nota sui formati.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 2 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Modalità di ridimensionamento, LoadAsync e un SVG nitido · 45 min

    Obiettivo: Costruisci in IconDesk una pagina ImageLab che renda visibili le due pipeline affiancate. Mostra un'unica immagine raster quattro volte con SizeMode impostato su Normal, Zoom, Cover e StretchImage, così che le differenze di ritaglio e distorsione siano evidenti, aggiungi una PictureBox che scarica un JPEG remoto con LoadAsync mantenendo la pagina reattiva mentre arriva, e inserisci un SVG assegnato tramite ImageSource a 16, 24, 32 e 48 pixel per dimostrare che resta nitido. Chiudi con un gestore che segnala, per ogni PictureBox della pagina, se l'immagine è arrivata da Image oppure da ImageSource. Deliverable: pagina ImageLab che mostra un'immagine raster nelle modalità Normal, Zoom, Cover e StretchImage; PictureBox che scarica un JPEG remoto con LoadAsync senza bloccare la pagina; un SVG assegnato tramite ImageSource e mostrato a 16, 24, 32 e 48 pixel; gestore di report che indica, per ciascuna PictureBox, se l'immagine è stata fornita da Image o da ImageSource; nota sui formati che elenca quali asset del lab passano da System.Drawing e quali restano stringhe di risorsa.

Modulo 3: Immagini del tema, URL, colore degli SVG e l'Image Picker del designer

Modulo 3 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sulle immagini del tema, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    Sorgenti di immagine che non sono file distribuiti accanto alla pagina: immagini del tema caricate per nome dalla cache del tema sul client, URL relativi e assoluti, dati base64 incorporati nel tema, l'Image Selector di Visual Studio che scrive per te la stringa della sorgente e il suffisso ?color= che ricolora un SVG monocromatico adatto con il nome di un colore del tema. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoNomi del tema, URL e un SVG ricolorato · 14 min

    Nomi del tema, URL e un SVG ricolorato — una videoguida del Modulo 3, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Icone e immagini, Modulo 3. L'immagine su un controllo spesso non è un file che distribuisci accanto alla pagina, ma una stringa sorgente, e la schermata IconGallery riempie cinque slot in cinque modi diversi.

    Il Modulo 2 ha lasciato IconDesk con un percorso scritto a mano per ogni aspetto, e va bene finché l'aspetto non deve cambiare. Un tema può fornire l'immagine come URL relativo, come URL assoluto, come dati incorporati oppure come immagine con un nome, e solo l'immagine con un nome aggiunge un livello di indirezione.

    Assegnare a ImageSource il nome di un'immagine del tema non apre nessun file e non crea nessun System.Drawing.Image. Il nome è una chiave che il client risolve dal tema che ha già caricato, ed è per questo che un tema diverso può fornire una grafica diversa senza alcuna modifica al tuo codice C#.

    L'Image Selector del designer sfoglia le immagini di progetto, le immagini del tema e ogni pacchetto di icone referenziato dal progetto, con un'anteprima di ciascuna. Per le icone monocromatiche mostra in anteprima anche il colore, così una decisione di ricolorazione si prende guardando, invece che ricompilando e ricaricando.

    Leggi quello che il picker ha scritto. Designer.cs contiene una stringa sorgente di risorsa che rimanda all'assembly che custodisce la grafica, mai una copia del file. La stessa stringa si può calcolare a runtime, e questo conta quando l'icona dipende dallo stato invece che dal layout.

    Aggiungere il suffisso di colore a una stringa sorgente ricolora un'icona vettoriale monocromatica adatta. Un colore letterale funziona, ma un nome di colore del tema è meglio, perché così l'icona segue il tema invece di fissare un valore che un futuro cambio di palette contraddirà in silenzio.

    Eseguendo IconGallery, cinque slot vengono riempiti da una chiave del tema, un URL relativo, un URL assoluto, una risorsa di un pacchetto e un'icona vettoriale ricolorata. Sembrano tutti ugualmente a posto, eppure solo l'URL assoluto dipende da un host che non controlli, ed è bene saperlo prima del deployment.

    Ora cambia tema. La chiave del tema si risolve in una grafica nuova, e il colore del tema nominato nel suffisso cambia insieme a lei. Le tre sorgenti che nominavano una grafica esatta restano identiche, ed è questa la differenza pratica tra un riferimento semantico e uno letterale.

    Lab tre: riempi IconGallery tramite l'Image Selector, ricolora un'icona monocromatica con un nome di colore del tema, leggi le stringhe in Designer.cs e scrivi la nota sul cambio di tema.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 3 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Immagini del tema, l'Image Selector e la ricolorazione · 45 min

    Obiettivo: Riempi in IconDesk una pagina IconGallery usando l'Image Selector del designer invece di scrivere a mano le stringhe delle sorgenti. Assegna le immagini a cinque controlli: un'immagine del tema indicata per nome, un SVG del progetto referenziato con URL relativo, un URL assoluto e almeno due asset di un pacchetto di icone, se ne hai installato uno. Ricolora un SVG monocromatico con il suffisso ?color= e il nome di un colore del tema, apri il Designer.cs generato e leggi le stringhe delle sorgenti prodotte dal selettore, poi passa l'applicazione da un tema Wisej.NET a un altro e annota quali asset sono cambiati e quali sono rimasti identici. Deliverable: pagina IconGallery con cinque controlli le cui immagini sono state assegnate tramite l'Image Selector del designer; tra queste un'immagine del tema indicata per nome, un SVG del progetto con percorso relativo, un URL assoluto e almeno due asset di un pacchetto di icone; SVG monocromatico ricolorato con il suffisso ?color= e il nome di un colore del tema; estratto di Designer.cs che mostra le stringhe delle sorgenti generate dal selettore; nota sul cambio di tema che registra quali asset hanno seguito il tema e quali sono rimasti fissi.

Modulo 4: I pacchetti di icone di Wisej.NET e NuGet

Modulo 4 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sui pacchetti di icone, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    Che cos'è davvero un pacchetto di icone: un assembly .NET che porta centinaia di file SVG come risorse incorporate, indirizzabili uno a uno tramite resource.wx e messi in cache dal browser un'icona alla volta, installabile dai package NuGet ufficiali Wisej-4, sfogliabile nell'image explorer di Visual Studio e richiamabile da C# attraverso il catalogo di icone del pacchetto. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoInstalla un pacchetto, scegli un'icona, leggi l'URL generato · 14 min

    Installa un pacchetto, scegli un'icona, leggi l'URL generato — una videoguida del Modulo 4, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Modulo 4. IconDesk ha bisogno di cinque icone oggi e forse di altre quaranta in questo trimestre. Raccoglierle file per file ti lascia spessori di tratto diversi, nessuno stile condiviso e nessuna traccia della provenienza di ogni cosa.

    Un pacchetto di icone è un normale assembly .NET la cui grafica è salvata come risorse incorporate. Un solo file nella cartella di output può portare centinaia o migliaia di icone, e ognuna resta indirizzabile singolarmente tramite il gestore delle risorse, quindi niente finisce impacchettato in un blocco unico e inutilizzabile.

    I due meccanismi consegnano in modo diverso, e questo decide dove sta ciascuno. Le icone di un pacchetto si tirano: una richiesta al primo uso, poi la cache del browser. Le immagini del tema si spingono, precaricate con il tema, ed è per questo che i cataloghi molto ampi stanno in un pacchetto.

    Installa i pacchetti ufficiali Wisej 4 e tieni le loro versioni major allineate a quelle del framework. Poi fai la build del progetto prima di cercarli, perché l'image explorer elenca solo i pacchetti contro cui il progetto è stato davvero compilato.

    Scegli un'icona e leggi quello che il designer ha generato: il gestore delle risorse, l'assembly del pacchetto, il file dell'icona e, se serve, il suffisso di colore. Ogni parte di quella stringa è verificata a runtime: un nome di file scritto a memoria non si risolve in niente.

    In C# preferisci il catalogo di icone del pacchetto a una stringa scritta a mano: una rinomina diventa un errore del compilatore invece di un controllo vuoto. Il namespace esatto cambia da pacchetto a pacchetto. Una sola proprietà immagine per controllo, e una didascalia accanto a ogni icona che porta significato.

    La pagina IconCompare mostra gli stessi cinque concetti disegnati da due famiglie, e rende la differenza di stile evidente come una pagina di catalogo non riesce mai a fare. Due icone monocromatiche accettano il suffisso di colore con un nome di colore del tema; una grafica multicolore lo ignora.

    Il pannello di rete fornisce la prova: una richiesta per icona al primo caricamento e hit di cache al ricaricamento. Una raccomandazione sostenuta da questo è difendibile, e mostra anche perché referenziare un pacchetto grande non costa a chi impara un download grande.

    Lab quattro: referenzia due pacchetti Wisej 4, costruisci una pagina IconCompare con entrambi, scegli almeno cinque icone nell'image explorer, ricolorane due e indica la famiglia di icone principale del progetto.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 4 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Due pacchetti di icone a confronto · 45 min

    Obiettivo: Aggiungi a IconDesk due package NuGet ufficiali di pacchetti di icone Wisej-4 e costruisci una pagina IconCompare che mostra gli stessi cinque concetti — Save, Delete, Search, User e Settings — presi da entrambe le famiglie, così che la differenza visiva sia impossibile da ignorare. Scegli almeno cinque icone attraverso l'image explorer di Visual Studio invece di scrivere il percorso, assegna le restanti dal catalogo del pacchetto in C#, ricolorane due con il suffisso ?color= e osserva nel pannello di rete i file delle icone che arrivano una richiesta alla volta e poi arrivano dalla cache del browser. Chiudi con una breve raccomandazione che indica la famiglia di icone principale del progetto. Deliverable: due package NuGet ufficiali di pacchetti di icone Wisej-4 referenziati da IconDesk; pagina IconCompare che mostra Save, Delete, Search, User e Settings da entrambi i pacchetti; almeno cinque icone scelte tramite l'image explorer di Visual Studio invece che scritte a mano; due icone ricolorate con il suffisso di colore e una nota su quale grafica ha accettato la ricolorazione; raccomandazione di un paragrafo che indica la famiglia di icone principale del progetto, con le prove raccolte dalla cache del browser.

Modulo 5: Risorse incorporate e resource.wx

Modulo 5 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sulle risorse incorporate, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    Distribuire le immagini dentro l'assembly: Build Action impostata su Embedded Resource, l'handler resource.wx con e senza qualificatore di assembly, le estensioni css, js, html, jpg, jpeg, png, gif, svg e bmp che serve, e il file distribuito che può sovrascrivere una risorsa incorporata senza ricompilare. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoIncorporala una volta, indirizzala con resource.wx · 14 min

    Incorporala una volta, indirizzala con resource.wx — una videoguida del Modulo 5, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Icone e immagini, Modulo 5. Cinque asset di IconDesk smettono di essere file sparsi accanto all'applicazione e iniziano a viaggiare dentro l'assembly, indirizzati da una stringa invece che da un percorso su disco.

    Una grafica distribuita accanto all'applicazione è a un passo di copia mancato dall'essere rotta. Il server risponde con un 404, il controllo non disegna niente, e il file è ancora presente sulla macchina dello sviluppatore: ecco perché il problema di solito sopravvive finché non è qualcun altro a eseguire la build.

    Per questo non c'è nessuna API. Aggiungi il file al progetto e imposta la sua build action su Embedded Resource, e i byte finiscono nel manifest dell'assembly. Quella singola proprietà è anche ciò che trasforma una normale libreria di classi in un pacchetto di icone, come mostrerà il Modulo 6.

    Indirizza la risorsa come stringa. Senza un nome di assembly, Wisej.NET cerca fra gli assembly caricati una risorsa che corrisponda. Nominare l'assembly in modo esplicito, scritto senza l'estensione del file, toglie l'ambiguità quando due assembly potrebbero contenere ciascuno un file con lo stesso nome.

    Il gestore serve esattamente nove estensioni: fogli di stile, script, HTML, JPEG in tutte e due le grafie, PNG, GIF, grafica vettoriale e bitmap. Nient'altro viene servito, quindi un file di icona incorporato con grandi speranze resta un 404, e la soluzione è convertirlo, non fare il debug dell'URL.

    Un file distribuito con l'applicazione può rispondere allo stesso indirizzo prima della copia incorporata. È davvero utile per il rebrand di un cliente o per una correzione urgente senza ricompilare, e significa anche che la cartella che contiene quegli override è ora qualcosa che devi proteggere.

    Nel browser cinque richieste tornano con cinque risposte riuscite, tutte servite dall'assembly dell'applicazione, e il ricaricamento arriva invece dalla cache. La grafica vettoriale resta markup per tutto il percorso; in nessun momento diventa un'immagine System.Drawing.

    Mettere un logo sostitutivo accanto all'applicazione distribuita cambia l'immagine senza ricompilare nulla. Poi una lettera raddoppiata in un nome di risorsa produce un 404, e la checklist in sei passi lo trova al passo quattro, che è più veloce che rileggere di nuovo il codice.

    Lab cinque: incorpora cinque asset, mostrali tutti su ResourceLab, qualifica una sorgente con il nome dell'assembly, sovrascrivine uno con un file distribuito e racconta la caccia al 404.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 5 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Incorporare, qualificare e sovrascrivere le risorse · 45 min

    Obiettivo: Aggiungi all'applicazione IconDesk una cartella Resources che contiene logo.svg, status-ok.svg, status-warning.svg, photo.png e badge.gif, e imposta su ciascuno di essi Build Action Embedded Resource. Costruisci una pagina ResourceLab che li mostra tutti e cinque tramite sorgenti immagine resource.wx, scrivi una di quelle sorgenti anteponendo al file il nome dell'assembly dell'applicazione perché la ricerca non possa essere ambigua e lascia le altre non qualificate. Poi metti un file sostitutivo accanto all'applicazione distribuita per sovrascrivere una risorsa incorporata e cattura il prima e il dopo. Concludi sbagliando di proposito un URL di risorsa e annotando i passi che hanno individuato l'errore. Deliverable: cartella Resources con logo.svg, status-ok.svg, status-warning.svg, photo.png e badge.gif tutti marcati Embedded Resource; pagina ResourceLab che mostra ogni asset incorporato tramite una sorgente immagine resource.wx; una sorgente immagine qualificata con il nome dell'assembly dell'applicazione e le altre lasciate non qualificate; file distribuito che sovrascrive una risorsa incorporata, catturato prima e dopo; nota di troubleshooting che elenca i passi con cui hai individuato un URL di risorsa scritto male.

Modulo 6: Costruire il tuo pacchetto di icone Wisej.NET

Modulo 6 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sul pacchetto di icone personalizzato, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    La ricetta in quattro passi dietro ogni pacchetto di icone: una class library, una cartella Resources, i file delle icone marcati Embedded Resource e un catalogo statico di stringhe resource.wx che dà al team IntelliSense invece di percorsi magici, più le pratiche di denominazione, versionamento, ricolorazione e override che mantengono il pacchetto manutenibile. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoDodici SVG diventano un pacchetto di icone riutilizzabile · 14 min

    Dodici SVG diventano un pacchetto di icone riutilizzabile — una videoguida del Modulo 6, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Modulo 6. Ormai IconDesk usa icone dappertutto e non ne possiede nessuna. Il rimedio è un pacchetto tutto suo: una libreria di classi, una directory Resources e dodici icone vettoriali marcate come risorse incorporate.

    Al momento la stessa icona è scritta in quattro modi leggermente diversi su quattro schermate. Ognuno di quei percorsi è una stringa, quindi tre di loro compilano benissimo e falliscono solo nel browser, e questo sposta l'errore dalla build allo schermo di un cliente.

    La ricetta documentata ha quattro passi: crea una libreria di classi, crea una directory Resources, mettici dentro le icone e imposta la loro build action su Embedded Resource. Quello che ne esce è un unico indirizzo fatto dal gestore, dal nome dell'assembly e dal percorso della risorsa. Verificalo una volta contro l'applicazione in esecuzione.

    Il catalogo trasforma quell'indirizzo in IntelliSense. Una costante privata contiene la parte condivisa del percorso, e una costante pubblica per icona nomina il concetto invece del file, così chi chiama scrive un nome di prodotto come Save o Warning invece di ripetere un percorso.

    Due strade finiscono sulla stessa stringa. L'Image Selector la scrive in Designer.cs quando è una decisione di layout a scegliere l'icona, e il codice a runtime la legge dal catalogo quando decide lo stato dell'applicazione. E la grafica vettoriale resta markup che il client risolve, mai un'immagine System.Drawing.

    Funziona. Dodici icone arrivano da un solo assembly referenziato, una richiesta alla volta man mano che ciascuna viene usata la prima volta, e servite dalla cache del browser al caricamento successivo. Niente nell'applicazione aveva bisogno di sapere dove vive la grafica su disco.

    Il suffisso di colore ricolora due icone e viene ignorato dalla terza, perché quel file ha un colore fissato nel codice della grafica. Togli il valore fissato dal markup, poi ricontrolla il risultato in un tema scuro invece di dare per scontato che la correzione valga anche lì.

    Tre abitudini tengono il pacchetto manutenibile: un concetto per icona, il catalogo trattato come API pubblica del pacchetto, così che rinominare resti un problema del compilatore, e una strada di override documentata per un'applicazione che ha bisogno di una grafica diversa sotto lo stesso nome familiare.

    Lab sei: costruisci la libreria IconDesk.Icons con dodici icone incorporate e il catalogo, assegnane alcune nel designer e alcune da codice, verifica tre ricolorazioni e scrivi le regole di versionamento.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 6 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — IconDesk.Icons: il tuo pacchetto · 45 min

    Obiettivo: Crea IconDesk.Icons come class library accanto all'applicazione, metti almeno dodici icone SVG in una cartella Resources e marcale Embedded Resource. Aggiungi un catalogo statico AppIcons che espone ogni icona come stringa resource.wx dal nome parlante, così che chi la usa non debba mai scrivere un percorso; referenzia la libreria da IconDesk, poi assegna alcune icone tramite il designer e altre dal catalogo in C#. Verifica il suffisso di colore su tre icone e annota la pulizia dell'SVG di cui hanno avuto bisogno. Concludi con le regole di denominazione e versionamento che stabiliscono come una nuova icona entra nel pacchetto. Deliverable: class library IconDesk.Icons con almeno dodici file SVG in una cartella Resources, tutti Embedded Resource; catalogo statico AppIcons che espone ogni icona come stringa resource.wx dal nome parlante; pagina IconDesk che assegna alcune icone tramite il designer e altre dal catalogo AppIcons; tre icone verificate con il suffisso di colore più una nota sulla pulizia dell'SVG di cui hanno avuto bisogno; regole di denominazione e versionamento che descrivono come una nuova icona entra nel pacchetto e come un'applicazione ne sovrascrive una.

Modulo 7: Font di icone, contenuto HTML e strategia delle icone in produzione

Modulo 7 di Icone e immagini in Wisej.NET — usa pacchetti di icone, SVG, bitmap, risorse incorporate e font di icone per costruire interfacce nitide e manutenibili. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sui font di icone & sulla policy di produzione, supera la verifica delle conoscenze e completa il lab pratico in IconDesk.

  1. LetturaGuida della lezione · 14 min

    L'ultimo meccanismo e la policy che li tiene insieme tutti: un foglio di stile di font di icone caricato da Default.html, AllowHtml sui controlli che devono interpretare il markup, glifi di icone dentro le celle di una DataGridView con click sugli elementi distinti per ruolo, e una checklist di produzione che copre accessibilità, licenze, caching, dipendenze esterne e coerenza visiva. Che cosa significa per uno sviluppatore che conosce le basi di C# e ha già lavorato un po' con i controlli e il designer di Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoFont di icone, contenuto HTML e la policy di produzione · 14 min

    Font di icone, contenuto HTML e la policy di produzione — una videoguida del Modulo 7, costruita passo dopo passo in IconDesk. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Icone e immagini in Wisej.NET, Modulo 7, il capstone. IconDesk sa già disegnare un'icona in cinque modi diversi. Ora ne guadagna un sesto e, cosa più importante, la regola scritta che decide fra loro.

    Un oggetto immagine, una stringa sorgente, un'immagine del tema, una risorsa incorporata e ora un font di icone. Sei meccanismi senza una prima scelta scritta: ecco come lo stesso comando Delete finisce per avere un aspetto diverso su tre schermate della stessa applicazione.

    Un font di icone salta del tutto la pipeline delle immagini. Un solo link al foglio di stile nel Default.html fa scaricare al browser il CSS e i file del font, e una classe CSS dentro il testo di un controllo che consente l'HTML disegna il glifo come testo.

    Nessuno dei due approcci vince del tutto. Le risorse Wisej portano ricolorazione, Image Selector e vere proprietà immagine. I font portano un design system CSS già esistente e mettono il glifo in linea con il testo. E l'origine di quel foglio di stile, rete pubblica o tuo server, è una decisione vera.

    Nel codice le due decisioni stanno a livelli diversi. Il link al foglio di stile vale per tutta la pagina; consentire l'HTML è una scelta consapevole per singolo controllo. Due glifi con ruoli diversi condividono così una cella di griglia, e il clic riporta quale elemento è stato colpito.

    Ecco la policy. Immagini del tema per la grafica semantica che segue il tema. Un pacchetto principale per i comandi. Il pacchetto personalizzato per la grafica di prodotto che possiedi. Raster per le fotografie. Font di icone solo dove l'integrazione HTML ripaga la dipendenza in più.

    La pagina di riepilogo esegue tutti e cinque i meccanismi insieme. Cambia tema e lo seguono solo l'immagine del tema e l'icona vettoriale ricolorata. L'icona del pacchetto, quella del pacchetto personalizzato e l'asset incorporato restano esattamente come sono stati disegnati, ed è questo il comportamento attorno a cui è scritta la policy.

    La colonna azioni risponde a due clic diversi da un'unica cella leggendo il ruolo dell'elemento colpito. Il controllo di qualità si ripete poi in un tema scuro, verificando che ogni glifo sia ancora leggibile e che ogni azione porti ancora un nome che uno screen reader possa annunciare.

    Il capstone: il foglio di stile e una toolbar che consente l'HTML, la colonna azioni con i ruoli, la pagina riepilogo dei cinque meccanismi, la policy delle icone scritta e una nota di qualità su chiaro e scuro.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto IconDesk di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 7 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Capstone: la policy delle icone di IconDesk · 45 min

    Obiettivo: Completa il capstone di IconDesk. Referenzia un foglio di stile di font di icone da Default.html, imposta AllowHtml su una piccola toolbar o su una card e disegna le sue icone come glifi del font, poi costruisci una colonna di DataGridView le cui celle contengono azioni realizzate con il font di icone e leggi quale elemento ha cliccato l'utente, così che Edit e Delete facciano cose diverse. Costruisci una pagina di riepilogo che dimostra tutti insieme i meccanismi visti nel corso: un'immagine del tema, un'icona di un pacchetto ufficiale, un'icona del tuo pacchetto, un logo incorporato e un SVG ricolorato. Poi scrivi la policy delle icone in produzione del progetto ed esegui un giro di QA con un tema chiaro e uno scuro. Deliverable: foglio di stile di font di icone referenziato da Default.html e una toolbar o card con AllowHtml che disegna glifi del font; colonna di DataGridView le cui celle mostrano azioni con font di icone e rispondono all'elemento cliccato; pagina di riepilogo di IconDesk che dimostra un'immagine del tema, un'icona di un pacchetto ufficiale, un'icona del tuo pacchetto, un asset incorporato e un SVG ricolorato; policy scritta delle icone in produzione che copre accessibilità, licenze, caching e dipendenze esterne; giro di QA eseguito con un tema chiaro e uno scuro, con i risultati annotati.