WPF中Image不显示图片

Siriusnetcn 2016-06-12 04:58:16
我新建了一个wpf项目,然后放进一个Image,source选择了一个资源文件。在编辑xaml文件的时候,设计器已经正常显示图片了。可是当运行程序的时候,图片处就一片空白。这是怎么回事?我用的是vs2015.
...全文
2732 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
q__y__L 2020-04-28
  • 打赏
  • 举报
回复 1
我也碰到了类似的情况:在设计器里面有图片,但是在程序运行时没有,我的解决办法是:
<Image Source="happyface.jpg" Stretch="None" 
                 MouseUp="SomethingClicked" />
中的Source后面改为 :“./happyface.jpg” 即在图片前面加一个“./”表示当前文件夹。
frozleaf 2020-02-13
  • 打赏
  • 举报
回复
引用 2 楼 Siriusnetcn 的回复:
[quote=引用 1 楼 huang461072830 的回复:]
贴代码,没代码不好分析,有好多原因

<Window x:Class="Hello.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Hello"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Image Source="pack://siteoforigin:,,,/Resources/0.png" />
</Grid>
</Window>

大神指点![/quote]

修改0.png文件属性

复制到输出目录:始终复制
生成操作:无
plum_csdn 2019-11-13
  • 打赏
  • 举报
回复
<Image Source="pack://application:,,,/Resources/Images/media.ico"/>解决了
问题在于我之前相对路径写成了pack://application/Resources/Images/media.ico,因为这样设计器也能找到图片并加载,但是编译运行时不能。
总算解决了,多谢各位
plum_csdn 2019-11-13
  • 打赏
  • 举报
回复
我也遇到了同样的问题,改成用绝对路径才能解决,为什么会这样?因为代码移植后肯定不能一直用绝对路径,怎么解决呢
WhoLight 2019-02-21
  • 打赏
  • 举报
回复
我也这样, 最终19楼解决了问题,23333
BadEgger 2018-09-29
  • 打赏
  • 举报
回复
我的加个Visibility = "Visible" 好了。
东东车 2017-06-21
  • 打赏
  • 举报
回复
解决了:http://www.cnblogs.com/Jacklovely/p/6957747.html 得要copy always ,并且要 clean solution
东东车 2017-06-21
  • 打赏
  • 举报
回复
md,我的怎么也这样了?有解决的么?真诡异,昨天还是好的呢
LiuXiaochuan1016 2017-03-21
  • 打赏
  • 举报
回复
因为你没有添加到项目中,将包含图片的文件夹在解决方案资源管理器中复制进项目,然后路径对了就可以了
anotheryia 2017-03-02
  • 打赏
  • 举报
回复
设置图片属性中的 生成操作 为 Resource,然后引用路径不要用siteoforigin,直接写“/Resources/0.png”,然后重新生成试一下
是启山啊 2016-12-18
  • 打赏
  • 举报
回复
我也遇到了相同的问题,而按照楼上大神的办法确实也显示了图像,但是图片的路径变成了绝对路径,所以,应该是图片文件的相对位置设置上有问题吧。
丶花落谁家 2016-10-28
  • 打赏
  • 举报
回复
右键图片,复制,直接粘贴到你Source=" "中即可
Siriusnetcn 2016-06-13
  • 打赏
  • 举报
回复
按照楼上各位热心大神的说法挨个试过了,都没有解决。谢谢各位!
  • 打赏
  • 举报
回复
感觉你还是要将siteoforigin改为application。siteoforigin是使用网页站点图片时候的写法。你可以参考微软官方的说明。 https://msdn.microsoft.com/zh-cn/library/aa970069.aspx#The_siteoforigin_____Authority
小程序员 2016-06-12
  • 打赏
  • 举报
回复
如果是作为嵌入式资源来用确实是按照楼上那种做法,引用的时候不是 <Image Source="pack://siteoforigin:,,,/Resources/0.png" />, <Image Source="而是命名空间:component/Resources/0.png" />(而是命名空间:component/路径)
龍过鸡年 2016-06-12
  • 打赏
  • 举报
回复
你是把文件作为资源插入到程序中的吧 代码访问的话应该是 Properites[resKey],还真没怎么在xaml中使用过 通常我们是在解决方案管理器中直接建立一个文件夹,比如 abc 然后添加图片 0.png 如果 window 在根目录中则直接是 abc/0.png
Siriusnetcn 2016-06-12
  • 打赏
  • 举报
回复
已经添加过资源了,而且设计器能够预览这张图片了。 Source="pack://siteoforigin:,,,/Resources/0.png" 这是我在属性编辑器里面点选资源文件时候自动添加的。 看起来编辑器确实已经找到图片了,但是运行的时候却显示不出来:
引用 7 楼 huang461072830 的回复:
[quote=引用 2 楼 Siriusnetcn 的回复:] [quote=引用 1 楼 huang461072830 的回复:] 贴代码,没代码不好分析,有好多原因
<Window x:Class="Hello.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Hello" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Image Source="pack://siteoforigin:,,,/Resources/0.png" /> </Grid> </Window> 大神指点![/quote] 你看下程序根目录有没有Resources文件夹,文件夹里面有没有0.png,没有的话复制一个过去,问题解决[/quote]
Siriusnetcn 2016-06-12
  • 打赏
  • 举报
回复
[/img]
引用 7 楼 huang461072830 的回复:
[quote=引用 2 楼 Siriusnetcn 的回复:] [quote=引用 1 楼 huang461072830 的回复:] 贴代码,没代码不好分析,有好多原因
<Window x:Class="Hello.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Hello" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Image Source="pack://siteoforigin:,,,/Resources/0.png" /> </Grid> </Window> 大神指点![/quote] 你看下程序根目录有没有Resources文件夹,文件夹里面有没有0.png,没有的话复制一个过去,问题解决[/quote] 已经添加过资源了,而且设计器能够预览这张图片了。 Source="pack://siteoforigin:,,,/Resources/0.png" 这是我在属性编辑器里面点选资源文件时候自动添加的。 看起来编辑器确实已经找到图片了,但是运行的时候却显示不出来: [img=https://img-bbs.csdn.net/upload/201606/12/1465723910_789540.png]
小程序员 2016-06-12
  • 打赏
  • 举报
回复
引用 2 楼 Siriusnetcn 的回复:
[quote=引用 1 楼 huang461072830 的回复:] 贴代码,没代码不好分析,有好多原因
<Window x:Class="Hello.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:Hello" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Image Source="pack://siteoforigin:,,,/Resources/0.png" /> </Grid> </Window> 大神指点![/quote] 你看下程序根目录有没有Resources文件夹,文件夹里面有没有0.png,没有的话复制一个过去,问题解决
Siriusnetcn 2016-06-12
  • 打赏
  • 举报
回复
引用 3 楼 qqamoon 的回复:
貌似应该把 siteoforigin 改为 application 在 xaml 中使用资源直接写资源路径(相对路径),不用写 pack uri 比如,假设 0.png 位于 resources 文件夹中,可直接写 resources/0.png 如果当前 window 与 0.png 处于同一目录则可以直接写 0.png
还是没有显示图片:
加载更多回复(5)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧