【问题标题】:How to find out relative path of image如何找出图像的相对路径
【发布时间】:2013-01-09 12:05:05
【问题描述】:

在遗留项目中有图像的绝对路径, 例如:

C:/projects/LegacyProject/Project/Client/UserInterface/Images/arrow.png

现在我想使用相对路径,以便每个开发人员都可以使用它 项目,无论他的源代码副本在哪里。

有没有一种简单的方法可以找出(资源)相对路径? 那我该怎么用呢?

目前我有例如:

<Image Source="C:/projects/LegacyProject/Project/Client/UserInterface/Images/arrow.png" Stretch="Fill" />

我想要的是这样的:

<Image Source="arrow.png" Stretch="Fill" />

尝试过

<Image Source="pack:,,, arrow.png" Stretch="Fill" />
<Image Source="/WPF1;arrow.png"></Image> 

类似的东西

【问题讨论】:

  • 不确定您的上下文,但我认为~ 确实等同于应用程序根目录。你应该能够做到&lt;Image Source="~/Images/arrow.png" Stretch="Fill" /&gt; 除非在根目录之后UserInterfaceClient/UserInterface 是根目录之后的文件夹。那么你也需要添加它们,即:&lt;Image Source="~/Client/UserInterface/Images/arrow.png" Stretch="Fill" /&gt;
  • 我怎么能说应用程序根是什么?项目中有不止一个命名空间,可能就是这个问题

标签: c# wpf image xaml imagesource


【解决方案1】:

将图像文件放入 Visual Studio 项目中的文件夹(假设为 Images),并将它们的 build action 设置为 Resource

现在您可以像这样在 XAML 中简单地使用它们:

<Image Source="Images/arrow.png" ... />

您必须在代码隐藏中编写

var uri = new Uri("pack://application:,,,/Images/arrow.png");
image.Source = new BitmapImage(uri);

【讨论】:

  • 谢谢!已将图像重新包含在项目中,构建操作是“资源”,它们位于“图像”文件夹中,并且我收到 XAML 解析异常“'无法从文本'图像/箭头创建'图像源'。 .png'”。我在 XAML 中需要它,而不是背后的代码。
  • 图像是否在您的项目中引用的另一个程序集中?
  • 不,它在一个组件中
  • 奇怪,它应该只是这样工作。如图所示,在代码中创建BitmapImage 是否有效?只是为了确保文件没有以某种方式损坏。它是哪个 .Net 版本?
  • .NET 4.0,必须尝试 BitmapImage 部分。
【解决方案2】:

通过单击使用Image 控件的Source 属性添加图像

那么路径将是这样的:

/[project name];component/[folder name: e.g. Images]/[file name]

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-07-25
  • 2015-12-24
  • 2011-08-25
  • 2018-11-05
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多