Deepzoom in Silverlight 2.0
di Marco De Sanctis, in Silverlight 2.0, 18 novembre 2008
private void showBorder() { // Recupero il rectangle dell'image in dimensioni // logiche del viewport Rect logicalRect = this.HighlightedImage.GetMainViewPortRect(); // trasformo le dimensioni logiche del ViewPort in // dimensioni element Rect elementRect = this.target.LogicalToElementRect(logicalRect); // dimensiono il Border border.Width = elementRect.Width + 2; border.Height = elementRect.Height + 2; // sposto l'origine del border Point borderOrigin = new Point( elementRect.X - 1, elementRect.Y - 1); Canvas.SetLeft(this.border, borderOrigin.X); Canvas.SetTop(this.border, borderOrigin.Y); // rendo visibile il border border.Opacity = 1; }
Il codice del metodo showBorder è piuttosto semplice e merita veramente pochi commenti.
L'unico punto di interesse risiede nell'invocazione del metodo LogicalToElementRect, un altro extension method disponibile nella solution allegata che, analogamente a MultiScaleImage.LogicalToElementPoint, trasforma un rettangolo in coordinate logiche in un analogo con coordinate reali:
public static Rect LogicalToElementRect(this MultiScaleImage msi, Rect logicalRect) { // recupero gli estremi del rettangolo logico Point logicalUpperLeft = new Point(logicalRect.X, logicalRect.Y); Point logicalBottomRight = new Point(logicalRect.Right, logicalRect.Bottom); // trasformo gli estremi in coordinate reali Point realUpperLeft = msi.LogicalToElementPoint(logicalUpperLeft); Point realBottomRight = msi.LogicalToElementPoint(logicalBottomRight); // costruisco il rettangolo reale e lo restituisco return new Rect(realUpperLeft, realBottomRight); }
A questo punto è sufficiente creare un'istanza della classe ImageHighlighter all'interno della pagina, fornendo i riferimenti agli oggetti MultiScaleImage e Border da utilizzare
private void msi_ImageOpenSucceeded(object sender, RoutedEventArgs e) { highlighter = new ImageHighlighter(this.msi, this, this.border); }
per ottenere un effetto simile a quello in figura:

Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Sullo stesso argomento
-
Applicazioni Silverlight con il cloud computing su Windows Azure
-
Aggiungere interattività al controllo Chart di Silverlight 3.0
-
Realizzare un sito completo in Silverlight: una galleria fotografica
-
Supporto audio e video in Silverlight 3.0
-
Effetti speciali sulle immagini in Silverlight 3.0
-
Anteprima di Expression Blend 3.0
-
Le novità di Silverlight 3.0 beta 1
-
Realizzare un menu riutilizzabile utilizzando DataTemplate e DataBinding
-
Un tocco di stile alle applicazioni Silverlight: style e template
-
Multithreading in Silverlight 2.0

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.