0

ダイアログに画像を表示したいのですが、.exe があるディレクトリに関連するディレクトリにある可能性があります。

project
- data
 -- logo  //<-- that's where the image is located
-bin      //<-- that's where the .exe is in

デフォルトの画像を .exe に含める必要がありますが、ダイアログを表示するときは、最初に \data\logo ディレクトリを確認し、指定されたファイル名の画像がそこにある場合は、その画像を表示に使用する必要があります。 .exeの中にあります。

これを行う方法についてのアイデアはありますか?

ありがとう、

タビナ

4

3 に答える 3

1

パックURIを使用する

pack://application:,,,/ReferencedAssembly;component/data/logo/image.png
于 2012-04-25T07:48:49.190 に答える
0

私が今していることは

  // set the logo
  string path = Environment.CurrentDirectory + "\\data\\logo\\logo.gif";
  var uri = new Uri(path, UriKind.Absolute);
  try
  {
    this.myImg.Source = new BitmapImage(uri);
  }
  catch (Exception e)
  {
    this.myImg.Source = new BitmapImage(new Uri(@"pack://application:,,,/myAssemblyName;component/Images/logo.gif"));
  }

これはかなりうまく機能しますが、私が気に入らないのは、すべてコード ビハインドで記述されていることです。もっと再利用できるようにした方がいいと思います。すべてをテンプレートに入れてビューボックス/画像に適用する方法はありますか?

ありがとう、

タビナ

于 2012-04-26T06:42:53.820 に答える
0

彼がexeに関連するフォルダーを要求するので、ロゴはファイルシステム内に配置する必要があることを意味することをお勧めします(例: c:\program files\MyApp\data\logo)。したがって、ファイルが存在するかどうかを確認します

File.Exists("/data/logo/logo.png")

false が返された場合は、埋め込みリソースを読み込むことができます。

//編集

このスニペットを Visual Studio IDE で使用する場合、パスは次の場所にあります。

<Project directory>/bin/debug/data/logo
于 2012-04-25T07:52:40.263 に答える