WPF显示相对位置的图像

时间:2012-04-25 07:44:31

标签: wpf image file path relative

我想在我的对话框上显示一个图像,该图像可以位于相对于.exe所在目录的目录中,例如

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

.exe中应包含默认图像,但在显示对话框时,应先检查\ data \ logo目录,如果找到具有给定文件名的图像,则应使用该图像进行显示而不是在.exe中的那个。

关于如何做到这一点的任何想法?

谢谢,

tabina

3 个答案:

答案 0 :(得分:1)

使用pack URI

pack://application:,,,/ReferencedAssembly;component/data/logo/image.png

答案 1 :(得分:0)

当他要求提供相对于exe的文件夹时,我建议他表示徽标应位于文件系统内(例如c:\ program files \ MyApp \ data \ logo)。所以我会检查文件是否存在

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

如果返回false,则可以加载嵌入的资源。

//修改

如果在Visual Studio IDE中使用此代码段,则路径位于

<Project directory>/bin/debug/data/logo

答案 2 :(得分: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"));
  }

这很好用,但我不喜欢这个是它全部写在代码隐藏中。我宁愿让它更容易重复使用。 有没有办法将它全部放入模板并将其应用于视图箱/图像?

谢谢,

tabina