0

埋め込みリソースからImageインスタンスにイメージをロードしようとしています。問題は、画像のサイズが常に 0 であることです。

コード スニペットは次のとおりです。

Image image = new Image();
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Images/marker.png", UriKind.Relative));
image.SetValue(Image.SourceProperty, img);


System.Diagnostics.Debug.WriteLine("output 1 = " + image.DesiredSize.Width); // return 0
System.Diagnostics.Debug.WriteLine("output 2 = " + image.ActualWidth); // return 0

画像のサイズに応じて画像をオフセットする必要があるため、画面にレンダリングする前に画像のサイズを知る必要があります。

ありがとうございました



更新: ありがとうシルバーマインド

サンプルコードで自分の質問に答えました

4

3 に答える 3

2

BitmapImage.DownloadProgress イベントを見てください。

URI による BitmapImage の構築は、本質的に非同期です。工事の進捗状況を報告するイベントです。

言い換えると、が必ずダウンロード/構築さActualWidthれる前に実行すると、 として 0 が返される可能性があります。BitmapImageActualWidth

于 2012-10-21T15:48:49.413 に答える
1

"/Images/marker.png" - ここにファイルがありますか?

フォルダの名前が大文字の I なしで images になっているためでしょうか。

また、次を返します。

image.getValue(); // here what null? after setting it
于 2012-10-21T15:29:34.033 に答える
0

Silvermindに感謝します。彼はCreateOptionsを使用することを提案しました。

最後に、私は解決策を見つけました:

Image image = new Image();

Uri uri = new Uri("/Images/marker_stop.png", UriKind.Relative);
BitmapImage bi = new BitmapImage(uri);
bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;

image.Source = bi;
System.Diagnostics.Debug.WriteLine("************************************* in image.ActualWidth " + ", " + bi.PixelWidth); // return 30
于 2012-10-22T10:00:57.107 に答える