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

当他要求相对于 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 回答
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 回答