9

我正在尝试使用本地资源将图标放在按钮内。(C# 视觉工作室 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'."}

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

4

4 回答 4

9

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

这是处理资源、内容文件等的 MSDN 文章的链接。

于 2012-09-27T23:06:04.087 回答
6

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

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

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

Resources/Purple.bmp用你的路径代替。

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

于 2015-04-23T19:57:03.763 回答
1

我在这里的一篇博文中对此进行了介绍。

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

<Image Margin="5" Source="/Images/favicon.ico" Height="100"/>
于 2012-09-27T23:27:28.350 回答
0

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

  <Image Source="..\Images\down_arrow.gif" />
于 2012-09-30T05:50:10.393 回答