Silverlight コントロールにグリッドを作成し、プログラムでキャンバスを追加し、キャンバスに Image を読み込んで表示しています。
また、キャンバスに回転を追加しています。問題は、デフォルトで回転の CenterX と CenterY がキャンバスの左上になることです。私が望むのは、キャンバスの中心を中心に回転することです。
これを行うために、Rotation の CenterXとCenterY を Images ActualWidth
/ 2 とActualHeight
/ 2 に設定しようとしましたが、少なくともすぐには読み込まれないことがわかりました。それらを強制的に更新するにはどうすればよいですか?ActualWidth
ActualHeight
画像で DownloadProgress イベントを使用しても、ActualWidth と ActualHeight が設定されることは保証されないようです。
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));