Ich ein Raster auf meinem Silverlight-Steuerelement, ich bin Programmatically Hinzufügen einer Leinwand, und in der Leinwand ich Bild laden und anzeigen.So erzwingen ActualWidth und ActualHeight zu aktualisieren (Silverlight)
Ich habe auch eine Drehung auf der Leinwand. Das Problem besteht darin, dass das CenterX und CenterY der Rotation standardmäßig oben links im Canvas angeordnet ist. Was ich will, ist die Rotation um die Mitte der Leinwand.
Um dies zu tun, ich habe versucht, um die Bilder zu CenterX und CenterY der Rotation Einstellung ActualWidth
/2 und ActualHeight
/2, ich habe jedoch festgestellt, dass ActualWidth
und ActualHeight
nicht immer bevölkern, zumindest nicht sofort . Wie kann ich sie zwingen, sich zu aktualisieren?
mit Selbst die DownloadProgress Ereignis auf dem Bild scheint nicht der Actual und Actual zu gewährleisten sind bevölkert, und auch nicht mit 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));
Das hat für mich geklappt, danke! –
Arbeitete auch für mich. Vielen Dank. – Jordan