【问题标题】:ImageSource from a relative resource来自相关资源的 ImageSource
【发布时间】:2012-09-19 19:38:43
【问题描述】:

我正在尝试使用本地资源将图标放入按钮中。 (C# Visual Studio 2012)

在我的项目中,我有一个名为“Resources”的文件夹,其中包含“Icons/MyIcon.png”

以下代码有效(但未使用相对路径)

<Button Width="20" Height="20">
  <Button.Background>
        <ImageBrush ImageSource="C:\Documents\MyProject\Resources\Icons\MyIcon.png">
          </ImageBrush>
      </Button.Background>

但是,我希望它使用相对路径...所以我尝试了以下

  <ImageBrush ImageSource="..\MyProject\Resources\Icons\MyIcon.png">

它编译,但随后给我错误:

{"Cannot locate resource 'myproject/resources/icons/myicon.png'."}

然后我找到了一篇文章,谈到引用该项目并说要做:

"/[ assembly name ];component[ path within the project ]"

所以我尝试了:

<ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon.png">

但它不起作用。

它确实显示在 GUI-Builder 中...但是当我实际尝试“调试”代码时...它无法运行。

如果我通过添加“123”来更改路径,例如:

 <ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon123.png">

我得到一个预编译错误:“找不到指定的文件”。 一旦我删除了“123”,错误就会消失。并且图标再次显示在表单中。 但是当我跑步时......我仍然得到:

{"Cannot locate resource 'resources/icons/myicon.png'."}

发生了什么事?为什么它只能在运行之前找到资源?而不是我真正开始的时候?

【问题讨论】:

  • "但是,我希望它使用相对路径...所以我尝试了以下":首先要考虑的是这个文件是否被声明为嵌入资源或独立内容。如果这是一个内容,那么this solution works.

标签: c# wpf xaml visual-studio-2012 imagesource


【解决方案1】:

是否需要将图片的BuildAction设置为Resource?它是内置在程序集中的吗?还是您将其视为内容?在这种情况下,您需要将 BuildAction 设置为 Content 并适当地设置 CopyToOutputDirectory。

Here's 指向处理资源、内容文件等的 MSDN 文章的链接。

【讨论】:

  • 不知何故直到现在我才看到你的答案。
【解决方案2】:

我知道这是一篇旧文章,但对于 VS2013,这些示例都不适用于我,但所有这些示例的组合是我现在必须在 URI 中引用我的图像资源和源的方式..

"pack://application:,,,/!APP NAME!;component/Resources/Purple.bmp"

当然用!APP NAME!代替你的.."pack://application:,,,/test1;component/Resources/Purple.bmp"

还将Resources/Purple.bmp 替换为您的路径。

重要提示: component/ 是常量,不是路径的一部分。

【讨论】:

  • pack 为我工作。但是component/ 不是路径的一部分,它是一个常量。只有 Resources/Purple.bmp 是另一个程序集内的路径。我需要通过docu 详细查找。
【解决方案3】:

我在一篇博文 here 中对此进行了介绍。

对于名为“Images”的文件夹,它基本上看起来像这样。如果您的 .xaml 文件位于不同的文件夹中,那么您需要执行 ../Images/favicon.ico。请注意,在这两种情况下,您都不需要将项目名称添加到路径的开头。如果您需要更多详细信息,请参阅文章末尾的示例项目。

<Image Margin="5" Source="/Images/favicon.ico" Height="100"/>

【讨论】:

  • 您的方法显示图标出现在 Visual Studio 编辑器中,但是当我运行它时......它没有出现。我没有收到错误消息...该按钮没有图标。
  • 你能把你拥有的东西贴出来吗?我没有看到你使用Source的任何地方@
  • 我找到了解决方案。感谢您的帮助
  • @00jt 我面临同样的问题。你能分享你的解决方案吗?谢谢
  • 在解决方案资源管理器中,我必须选择图标文件:“Resources\Icons\MyIcon.png”然后在“属性”下,我必须将“构建操作”更改为:“资源”然后我能够简单地做到:
【解决方案4】:

这对我来说适用于资源文件夹在应用程序中的图像的相对路径。

  <Image Source="..\Images\down_arrow.gif" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-01
    • 2021-08-26
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多