0

以下のコードで画像を作成してみてください。

sp = new StackPanel() { Orientation = Orientation.Horizontal };
Image myImage = new Image() { HorizontalAlignment = HorizontalAlignment.Left, Width = 16, Height = 16, Margin = new Thickness(1, 0, 0, 0) };
MyImage.Source = new BitmapImage(new Uri("/MyAssembly;component/folder/image1.png", UriKind.RelativeOrAbsolute));
sp.Children.Add(MyImage);

その後、アプリを実行すると、画像が表示されません。Fiddler でデータを確認すると、404 エラーが発生しました。上の画像のソースは次のようなものです。

http://localhost:80/MyAssembly;component/folder/image1.png

ただし、このイメージはアセンブリ MyAssembly にコンパイルされます。

次のマークアップを使用して、アセンブリからイメージ xaml を取得しても問題ありません。

<Image Source="/MyAssembly;component/folder/image1.png"/>

混乱している。理由がわからない。コードで動的画像を取得するには?

更新: Clemens からの情報に感謝します。次のコードを試してください:

sp = new StackPanel() { Orientation = Orientation.Horizontal };
ImageSourceConverter converter = new ImageSourceConverter();
Image myImage = new Image() { HorizontalAlignment = HorizontalAlignment.Left, Width = 16, Height = 16, Margin = new Thickness(1, 0, 0, 0) }; 
MyImage.Source = (ImageSource)converter.ConvertFromString("/MyAssembly;component/folder/image1.png");
sp.Children.Add(MyImage);

前回と同じ結果。Fiddler からのメッセージ: お探しのリソースは削除されたか、名前が変更されたか、一時的に利用できません。

このためのリソースはまだ

 http://localhost:80/MyAssembly;component/folder/image1.png.
4

1 に答える 1

0

Silverlight でその Uri に使用するスキームがわかりませんpack://application,,,/MyAssembly;component/folder/image1.png。WPF のようなものを記述します。

しかし幸いなことに、いつでも次のように書くことができます。

ImageSourceConverter converter = new ImageSourceConverter();
MyImage.Source = (ImageSource)converter.ConvertFromString(
                     "/MyAssembly;component/folder/image1.png");

もちろん、相対 URI を明示的に設定することもできます。

MyImage.Source = new BitmapImage(
    new Uri("/MyAssembly;component/folder/image1.png", UriKind.Relative));

ただし、いずれの場合もBuild Action forimage1.pngを設定する必要があることに注意してくださいResource

于 2012-10-29T15:08:56.037 に答える