我在我的Silverlight控件上添加了一个网格,在程序中添加了一个画布,并在画布中加载和显示图像。
我还向画布添加了旋转。问题是,默认情况下,旋转的CenterX和CenterY是画布左上角。我希望旋转围绕画布的中心发生。
为此,我尝试将旋转的CenterX和CenterY设置为图像的
即使使用图像的DownloadProgress事件,也不能保证ActualWidth和ActualHeight已经填充,使用this.Dispatcher.BeginInvoke()也是如此...
我还向画布添加了旋转。问题是,默认情况下,旋转的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));