L'implementazione di Deep Zoom in Silverlight rappresenta indubbiamente un modo interessante di visualizzazione delle immagini, sia di medie che di grandi risoluzioni. Infatti, anche con immagini di grandezza tradizionale per il web, con Deep Zoom possiamo aggiungere un alto livello di interattività per l'utente e realizzare interessanti effetti.
Come abbiamo introdotto nell'articolo https://www.silverlightitalia.com/articoli/silverlight/Deepzoom-Silverlight-2.0.aspx, Deep Zoom si basa sul principio di elaborazione in tempo reale di una serie di tessere che compongono l'immagine originale. Per avere prestazioni adeguate all'uso, i progettisti del plug-in richiedono che tali tessere siano pre-elaborate attraverso il tool Deep Zoom Composer, con il quale possiamo realizzare la nostra composizione delle immagini, che il programma esporterà per noi seguendo l'articolata struttura richiesta dalla tecnologia.
L'esigenza di pre-elaborare le immagini con un tool esterno può essere un vincolo in quei progetti in cui diamo all'utente la possibilità di pubblicare le proprie immagini: per tale esigenza possiamo generare dinamicamente le varie tessere attraverso la libreria DeepZoomTools.dll, distribuita insieme al Composer, liberamente utilizzabile in produzione.
L'assembly si trova nella cartella di installazione del tool e, benché non sia documentata, una volta referenziata in una applicazione web, il suo utilizzo è molto semplice:
Dim _pathList As New List(Of String)()
'directory dove sono presenti le immagini
Dim _dir As New DirectoryInfo(HttpContext.Current.Server.MapPath("Images"))
Try
'immagini PNG presenti nella directory
Dim _files As FileInfo() = _dir.GetFiles("*.png")
'collezione di path completi delle immagini
For Each _file In _files
_pathList.Add(String.Format("{0}/{1}", _dir.FullName, _file.Name))
Next
Catch
End Try
Dim _collCreator As New Microsoft.DeepZoomTools.CollectionCreator()
'creazione della piramide delle immagini specificate nella lista e
'del file XML relativo
_collCreator.Create(_pathList, Path.Combine(_dir.FullName, "Images"))List<string> _pathList = new List<string>();
//directory dove sono presenti le immagini
DirectoryInfo _dir = new DirectoryInfo(HttpContext.Current.Server.MapPath("Images"));
try
{
//immagini PNG presenti nella directory
FileInfo[] _files = _dir.GetFiles("*.png");
//collezione di path completi delle immagini
foreach (var _file in _files)
{
_pathList.Add(string.Format("{0}/{1}", _dir.FullName, _file.Name));
}
}
catch { }
Microsoft.DeepZoomTools.CollectionCreator _collCreator = new Microsoft.DeepZoomTools.CollectionCreator();
//creazione della piramide delle immagini specificate nella lista e
//del file XML relativo
_collCreator.Create(_pathList, Path.Combine(_dir.FullName, "Images"));Nello snippet precedente recuperiamo le immagini PNG di una cartella del sito web, costruiamo il percorso e lo passiamo come parametro al metodo Create dell'oggetto CollectionCreator.
Potremmo far eseguire il codice all'interno di un HttpHandler o anche in una semplice pagina ASP.NET, da richiamare al momento della necessità di creare le gerarchie delle immagini.
Deep Zoom per Silverlight è stato trattato nel capitolo 12 del libro "Silverlight 3.0 - Guida Completa"
di Daniele Bochicchio, Cristian Civera, Alessio Leoncini e Marco Leoncini.
http://books.aspitalia.com/Silverlight-3.0/
E' possibile leggere un'anteprima del capitolo 10 all'indirizzo:
https://www.silverlightitalia.com/articoli/silverlight/effetti-speciali-immagini-silverlight-3.0.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


