Я сетка на моем элементе управления Silverlight, я программно добавляю холст, а на холсте я загружаю и отображаю изображение.
Я также добавляю вращение на холст. Проблема в том, что по умолчанию CenterX и CenterY вращения находятся в верхнем левом углу холста. Я хочу, чтобы вращение происходило вокруг центра холста.
Для этого я попытался установить CenterX и CenterY вращения на Изображения ActualWidth
/ 2 и ActualHeight
/ 2, однако обнаружил, что ActualWidth
и ActualHeight
не всегда по крайней мере, не сразу. Как я могу заставить их обновляться?
Даже использование события DownloadProgress на изображении не гарантирует заполнение ActualWidth и ActualHeight, равно как и использование этого. 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));