2017-07-06 5 views
-2

しませんクラッシュします。WPF Image.Sourceは、私はこのような相対パスに背後にあるコードで<strong>Image.Source</strong>を設定しようとしてきた何

しかし、このパスは存在し、と同じように動作します。矩形内にを入力します。 ここで何が間違っていますか?

+0

プログラム「クラッシュ」。そして、「四角形を塗りつぶす」とまったく同じ意味ですか?おそらく、必要に応じてImageコントロールのStretchプロパティを設定するのを忘れていたでしょう。 – Clemens

答えて

1

ここで何も間違いはありません。代わりにフルパスを使用してみてください。 1.

string exe = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName.Split('\\').Last(); 
IMG_3.Source = new BitmapImage(new Uri(System.Reflection.Assembly.GetExecutingAssembly().Location.Substring(0, System.Reflection.Assembly.GetExecutingAssembly().Location.Length - exe.Length) + "/Sprites/Layout/image1.png")); 
+0

ファイルがまだ存在しない場合はどうなりますか?相対パス(絶対パスと同じ)は、ファイル*がある限りうまく動作します*。 – Clemens

+0

これは最適な解決策ではないと思います。 –

+0

これはうまくいきました。ありがとう! –

1

画像ファイルがあなたのパスに相対的であるフォルダ構造に配置されている場合 - あなただけの数と同じことを行う、これを使用したくないので、もし.Last()は、LINQのですアプリケーションの実行可能アセンブリは、このようなContent File Pack URIsすることによって、それらをロードする必要があります:あなたはのBitmapImageのconstuctorによってスローされてFileNotFoundExceptionをキャッチしていないため

try 
{ 
    IMG_3.Source = new BitmapImage(
     new Uri("pack://application:,,,/Sprites/Layout/image1.png")); 
} 
catch 
{ 
    IMG_3.Source = fallbackImage; 
} 
関連する問題