que una cuadrícula en mi control Silverlight, estoy añadiendo programáticamente un lienzo, y en el lienzo Estoy cargando y la visualización de la imagen.Cómo forzar ActualWidth y ActualHeight para actualizar (Silverlight)
También estoy añadiendo un giro a la lona. El problema es que, de manera predeterminada, CenterX y CenterY de la rotación se encuentran en la parte superior izquierda del lienzo. Lo que quiero es que la rotación ocurra alrededor del centro del lienzo.
Para ello, He tratado de establecer la centerx y centery de la rotación de las imágenes ActualWidth
/2 y ActualHeight
/2, sin embargo he descubierto que ActualWidth
y ActualHeight
no siempre se llenan, al menos no de inmediato . ¿Cómo puedo obligarlos a actualizarse?
Incluso utilizando el evento DownloadProgress en la imagen no parece garantizar la ActualWidth y ActualHeight están pobladas, y tampoco lo hace utilizando this.Dispatcher.BeginInvoke() ...
Image imgTest = new Image();
Canvas cnvTest = new Canvas();
Uri uriImage = new Uri("myurl", UriKind.RelativeOrAbsolute);
System.Windows.Media.Imaging.BitmapImage bmpDisplay = new System.Windows.Media.Imaging.BitmapImage(uriImage);
bmpDisplay.DownloadProgress += new EventHandler<System.Windows.Media.Imaging.DownloadProgressEventArgs>(this.GetActualDimensionsAfterDownload);
imgTest.Source = bmpDisplay;
imgTest.Stretch = Stretch.Uniform;
imgTest.HorizontalAlignment = HorizontalAlignment.Center;
imgTest.VerticalAlignment = VerticalAlignment.Center;
cnvTest.Children.Add(imgTest);
this.grdLayout.Children.Add(imgTest);
this.Dispatcher.BeginInvoke(new Action(GetActualDimensions));
Eso funcionó para mí, gracias! –
Funcionó para mí también. Gracias. – Jordan