C# 通过WPF中的XAML代码加载外部图像?

C# 通过WPF中的XAML代码加载外部图像?,c#,wpf,image,xaml,expression-blend,C#,Wpf,Image,Xaml,Expression Blend,在images文件夹中,我的WPF exe文件旁边有一个图像lock.png。 现在,我将把它作为映像加载到WPF项目中,我使用了以下XAML代码: <Image Stretch="Fill" Source="pack://siteoforigin:,,,/images/lock.png" /> 它可以工作,但在我处理项目时,Expression Blend或visualstudio不会显示它。 在这些情况下,如何显示外部图像?是您的主要IDE Visual Studio吗?

images
文件夹中,我的WPF exe文件旁边有一个图像
lock.png
。 现在,我将把它作为映像加载到WPF项目中,我使用了以下XAML代码:

<Image Stretch="Fill" Source="pack://siteoforigin:,,,/images/lock.png" />

它可以工作,但在我处理项目时,
Expression Blend
visualstudio
不会显示它。

在这些情况下,如何显示外部图像?

是您的主要IDE Visual Studio吗?
如果是,为什么要手动执行此操作?在“属性”窗口中,您只需浏览要与图像组件一起使用的图像的方式即可

尝试动态加载图像。这应该在xaml上:

<Image Stretch="Fill" Name="MyImage" />

如果图像是相对于EXE位置的,只需执行以下操作

<Image Source="Images\lock.png" />

如果图像不是相对的,那么你有一个更大的问题。只有当您实际将资源“打包”到程序集中时,打包语法才有用

松散映像和Blend的问题在于Blend将您的exe托管在它控制的临时目录中,并查找与该临时目录相关的映像,这将破坏您所依赖的任何路径。

使用以下格式: 项目组件/映像路径

e、 g


其中ImageDemo是项目名称,Image/ISIBAR.png是项目内部的路径

我有同样的问题

确保将映像生成操作设置为“资源”。(右键单击图像,然后转到“属性”,将“生成操作”设置为“资源”)

此外,使用应用程序权限代替原站点

来源

非常简单,您的图像不会显示,因为在运行应用程序后,应用程序不会读取图像

解决此问题的一种快速方法是手动将图像从物理文件夹放到应用程序中的文件夹中。一旦它存在,应用程序将能够读取它。

可能更容易:

<Image x:Name="ImageObject" Source="file:///C:\\1.jpg"/>


记住反斜杠

我使用的图像是一个外部图像,它不在
属性中。也许将其添加到visual studio项目解决方案中会对您有所帮助。还是你不想?是否有一些目的,它必须保持“外部”?我想使用外部图像,因为我想随时更改它们,而无需更改代码。我还想减少主exe文件的数量。我明白了。我尝试从URL使用外部图像,它在这里工作。我尝试在URL上更改图像,在Visual Studio中也更改了图片。不确定您的问题可能在哪里:-(我有VS2008 SP1,除了我运行项目外,它不显示外部映像。谢谢,但我不想要它。此外,如果您测试了代码,您会发现您的解决方案无法解决此问题。它可能无法解决此问题,但它解决了我动态加载外部映像的问题…CurrentDomain.BaseDirectory解决了此问题。)我的诀窍!!!谢谢朋友,所以如果我想使用外部图像,我不能在开发时处理它?是吗?我发布的解决方案不起作用吗?这应该适用于相对URI的Otherwise一个完全限定的URI应该可以工作。你的解决方案适用于我们已经将图像插入到项目中的情况。在我的情况下,我不想插入在项目中插入映像。你说的“我不想在项目中插入映像”是什么意思?你是说你想让文件以松散内容的形式存在于磁盘上,而不是作为资源打包在程序集中?如果映像以松散内容的形式存在于磁盘上,那么我的解决方案将起作用(假设映像与应用程序的路径相关)。可能我没有完全理解您的问题?
如果映像作为松散内容存在于磁盘上,则我的解决方案将起作用(假设映像与应用程序的路径相关)
不,您的解决方案不起作用。
<Image Source="ImageDemo;component/Images/ISIBAR.png" Name="custLogo"/>
<Image x:Name="ImageObject" Source="file:///C:\\1.jpg"/>