Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用c#从WPF应用程序添加图像源?_C#_Wpf - Fatal编程技术网

如何使用c#从WPF应用程序添加图像源?

如何使用c#从WPF应用程序添加图像源?,c#,wpf,C#,Wpf,我是WPF应用程序的初学者。我查看了各种教程,但找不到向项目中添加图像的选项。我正在使用Visual Studio 2015。在我的.xaml页面中,它正在显示图像,但一旦我运行程序,它就不会显示图像。有人能帮我吗 如果XAML设计器正在向您显示该图像,那么在构建/编译之后,应用程序很可能找不到该图像。这是一个很常见的问题-设计器和实际应用程序的资源查找略有不同 右键单击项目,选择“清理”,稍等,然后再次右键单击并选择“构建”。完成后,检查output bin\debug或bin\releas

我是WPF应用程序的初学者。我查看了各种教程,但找不到向项目中添加图像的选项。我正在使用Visual Studio 2015。在我的.xaml页面中,它正在显示图像,但一旦我运行程序,它就不会显示图像。有人能帮我吗


如果XAML设计器正在向您显示该图像,那么在构建/编译之后,应用程序很可能找不到该图像。这是一个很常见的问题-设计器和实际应用程序的资源查找略有不同

右键单击项目,选择“清理”,稍等,然后再次右键单击并选择“构建”。完成后,检查output bin\debug或bin\release目录,查看映像是否位于.exe文件旁边。如果没有,则返回项目,右键单击项目中的图像并选择“属性”,然后选择BuildAction=
CopyToOutput
(即“始终”-可能是图像和类似只读资源的最佳选项)。再次构建项目,现在它应该在.exe文件旁边可见,并且应用程序应该能够找到它(前提是xaml中的图像路径正确)

如果在项目中看不到图像,则可能忘记添加它。右键单击项目,选择“添加现有”并添加图像,使其位于项目中。否则,VisualStudio构建过程对映像一无所知(即使XAML看到它),也不会将其复制到输出目录

我所描述的只是一种选择。还有很多。例如,您可以将图像添加为“嵌入式资源”,以便将其内置到.exe中,而不是放在它旁边。然而,所有这些选项在细节上都有所不同——具体而言,它们在以下方面有所不同:

  • 如何在项目中添加和配置图像选项
  • 在XAML中,图像的路径应该是什么样子
所以。。这很容易搞砸。对于初学者,只关注一个选项(比如:作为CopyToOutput的映像,或者作为嵌入资源的映像),不要混淆它们。仔细阅读文章,因为他们选择的方式往往不清楚

编辑:

我刚注意到你提供了代码。请参阅,您现在在XAML中访问图像的路径是:

Source="/WpfApplication1;component/Images/Start.png"
这表明这是一种嵌入式资源。您可以很容易地看到这是一个特殊的路径:
(dll或exe的名称);(组件)/文件路径
。如果您使用这样的路径(它们正式称为“pack uri”),那么您应该确保将映像添加到项目中,但它不是像我建议的那样将映像设置为“buildaction=CopyToOutput”,而是设置为“buildaction=EmbeddedResource”。它也不应立即位于项目根目录中,而应位于“images/”子文件夹中,并且该子文件夹应在VS的项目中可见

如果您想尝试“CopyToOutput”方式,那么路径将是:

Source="Images/Start.png"
在“CopyToOutput”模式下,您实际上不需要关心如何将映像添加到项目中,只需在运行.exe之前确保.exe文件旁边有一个“Images”文件夹即可。但是,您必须记住如何将该图像保留在那里。如果将文件夹和图像添加到项目中,并设置buildaction=content,则VS将为您记住它,并将文件夹和图像作为生成的一部分放置在.exe旁边


所以。。首先,确保将此图像和文件夹添加到项目中。然后决定要尝试哪种类型的BuildAction,设置它,在ImageSource中写入相关路径,然后。。祝你好运。第一次这样做可能会很困难,因为有很多方法可以做到这一点(不仅仅是我提到的2种),而且VS/Xaml通常不会报告任何错误。

如果Xaml设计器向您展示它,那么很可能在构建/编译之后,应用程序找不到该映像。这是一个很常见的问题-设计器和实际应用程序的资源查找略有不同

右键单击项目,选择“清理”,稍等,然后再次右键单击并选择“构建”。完成后,检查output bin\debug或bin\release目录,查看映像是否位于.exe文件旁边。如果没有,则返回项目,右键单击项目中的图像并选择“属性”,然后选择BuildAction=
CopyToOutput
(即“始终”-可能是图像和类似只读资源的最佳选项)。再次构建项目,现在它应该在.exe文件旁边可见,并且应用程序应该能够找到它(前提是xaml中的图像路径正确)

如果在项目中看不到图像,则可能忘记添加它。右键单击项目,选择“添加现有”并添加图像,使其位于项目中。否则,VisualStudio构建过程对映像一无所知(即使XAML看到它),也不会将其复制到输出目录

我所描述的只是一种选择。还有很多。例如,您可以将图像添加为“嵌入式资源”,以便将其内置到.exe中,而不是放在它旁边。然而,所有这些选项在细节上都有所不同——具体而言,它们在以下方面有所不同:

  • 如何在项目中添加和配置图像选项
  • 在XAML中,图像的路径应该是什么样子
所以。。这很容易搞砸。对于初学者,只关注一个选项(比如:作为CopyToOutput的映像,或者作为嵌入资源的映像),不要混淆它们。仔细阅读文章,因为他们选择的方式往往不清楚

编辑:

我刚注意到你提供了代码。请参阅,您现在在XAML中访问图像的路径是:

Source="/WpfApplication1;component/Images/Start.png"
这表明这是一个嵌入式资源