【问题标题】:WPF Dispay image from relative locationWPF 从相对位置显示图像
【发布时间】:2012-05-05 21:18:36
【问题描述】:

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

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

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

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

谢谢,

塔比娜

【问题讨论】:

    标签: wpf image file path relative-path


    【解决方案1】:

    我现在正在做的是

      // 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"));
      }
    

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

    谢谢,

    塔比娜

    【讨论】:

    • 您可以创建一个转换器,获取绑定属性(字符串)的值并执行您的代码。
    【解决方案2】:

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

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

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

    //编辑

    如果您在 Visual Studio IDE 中使用此 sn-p,则路径位于

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

    【讨论】:

      【解决方案3】:

      使用pack URI

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        • 1970-01-01
        • 2014-04-25
        相关资源
        最近更新 更多