我的 silverlight 控件上有一个网格,我正在以编程方式添加一个画布,并且在画布中我正在加载和显示图像。
我还在画布上添加旋转。问题是默认情况下,旋转的 CenterX 和 CenterY 是画布的左上角。我想要的是围绕画布中心发生的旋转。
为此,我尝试将旋转的 CenterX 和 CenterY 设置为图像ActualWidth
/ 2 和ActualHeight
/ 2,但是我发现它ActualWidth
并不ActualHeight
总是被填充,至少不是立即填充。如何强制他们更新?
即使在图像上使用 DownloadProgress 事件似乎也不能保证填充 ActualWidth 和 ActualHeight,使用 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));