En ciertas ocasiones al desarrollar una aplicación en
Silverlight, puede resultar necesario obtener las dimensiones reales de un archivo de imagen. Por ejemplo yo lo he necesitado para poder generar dinámicamente un
efecto DeepZoom sin procesamiento previo de las imágenes.
Esto es muy fácil de obtener en Silverlight 3 utilizando las
propiedades PixelWidth y PixelHeight, una vez que la imagen se ha abierto. El
siguiente ejemplo muestra cómo lograrlo:
public SLPage()
{
InitializeComponent();
Loaded += new
RoutedEventHandler(SLPage_Loaded);
}
void SLPage_Loaded(object sender,
RoutedEventArgs e)
{
Image anImage = new Image();
BitmapImage aBitmapImage = new BitmapImage(new Uri("http://www.uxity.com/images/logo.jpg",
UriKind.Relative));
anImage.Source
= aBitmapImage;
LayoutRoot.Children.Add(anImage);
aBitmapImage.ImageOpened +=new EventHandler<RoutedEventArgs>(aBitmapImage_ImageOpened);
}
void aBitmapImage_ImageOpened(object
sender, RoutedEventArgs e)
{
BitmapImage img = sender as BitmapImage;
double width = img.PixelWidth;
double height = img.PixelHeight;
HtmlPage.Window.Alert(width + "
" + height);
}