2016-11-28 4 views
1

後でバインディングを使用するために画像を読み込む方法があります。BitmapImageで相対URIが機能しない

次のように私はそれを設定すると、それは動作します:

public static ImageSource LoadImage() 
{ 
    return new BitmapImage(
     new Uri("C:/User/Name/Documents/Visual Studio 2015/Projects/Project/bin/debug/subfolder/sprite.png", UriKind.Absolute)); 
} 

をしかし、私は単純に使用する交換する場合:

public static ImageSource LoadImage() 
{ 
    return new BitmapImage(
     new Uri("/subfolder/sprite.png", UriKind.Relative)); 
} 

XAMLは、画像が表示されません。私はEnvironment.CurrentDirectoryを見て、それは返す"C:/User/Name/Documents/Visual Studio 2015/Projects/Project/bin/debug/"

私は解決策を探し回っていますが、何も見えないようです。

+0

画像がありますか?パスが正しいかどうか( '。/ sub/sprite'または' sub/sprite'を試してみましたか?)スプライトをプロジェクトに入れようとしましたが、常に「常にコピーする」または「新しいときにコピーする」に設定していることを確認しましたか? – devRicher

+0

はい、絶対パスを使用しているときに動作するため、相対パスを使用するときには動作しないので、確かにそこにあると確信しています。私はまた、先導的な期間を試して、スラッシュ、幸運を取り除く。 – Classtronaut

+0

私は、相対的な 'Uri'オブジェクトを一般的に動作させるようには見えません。私は絶対パスを使用する場合にのみ動作します。 –

答えて

0

画像を出力フォルダに入れたい場合は、プロジェクトにイメージを追加します。ビルドアクションで、[コンテンツ]を選択し、[出力ディレクトリにコピー]オプションで[常にコピー]を選択します。

イメージは出力に表示され、相対URIコマンドを使用してイメージを読み込むことができます。

0

イメージをアセンブリリソースファイルからロードする必要があります。

イメージファイルがVisual Studioプロジェクトフォルダsubfolderにあり、ビルドアクションがResourceに設定されていることを確認してください。それから、Resource File Pack URIをロードしてください:

public static ImageSource LoadImage() 
{ 
    return new BitmapImage(new Uri("pack://application:,,,/subfolder/sprite.png")); 
} 
関連する問題