您的位置:首页 > 移动开发

WPF 图片无法显示……关于Application及SiteOfOrigin的路径问题

2017-09-22 17:06 633 查看

WPF 图片无法显示……关于Application及SiteOfOrigin的路径问题

tags: wpf C#

初学WPF,因为一个图片显示折腾了一下午……归根到底还是没有很好理解WPF中的Resuorces的意义,记录一下……

问题现象:预览里面可以显示图片,但是程序运行起来了图片就显示不了了。用绝对路径可以在运行的时候显示,用

Uri u = new Uri("pack://SiteOfOrigin:,,,/images/k1.png", UriKind.RelativeOrAbsolute);


也可以在运行的时候显示,唯独使用

Uri u = new Uri("pack://Application:,,,/images/k1.png", UriKind.RelativeOrAbsolute);




<Image HorizontalAlignment="Right" Source="images/k1.png"/>


的时候都无法在运行时显示。

后来把图片作为资源添加后,可以可以正常显示了。在WPF里面的资源(Resources),跟以前接触的东西概念上是不一样的。到现在也还是没有完全理解资源到底是个什么,只能继续往后慢慢体会了。

在以往的开发经验中,资源只要放到相应的工程文件目录下,或者把资源路径指定正确就可以在工程中使用了,但是在WPF中好像不行。最开始,在工程文件夹下自己新建了一个文件夹,命名images,然后把图片都拷贝过去了,按照以往的开发经验,这个时候只要把相对路径指定对,图片就可以显示了,是一个非常简单的过程,但是在WPF中这样做只能在预览中显示,无法再程序运行过程中显示。

后来去网上看了很多人的帖子,关于资源、关于相对路径,算是对其有了朦胧的认识。在WPF中,Application授权好像只能访问程序集中有的东西(虽然对程序集的概念还有些模糊,跟工程有啥关系?),SiteOfOrigin授权以及绝对路径可以访问程序集外的内容,而把图片放入程序集的方式是通过添加资源的方式来实现,所以像以往那样只是把资源放到工程目录下是不行的!!!

补充一句,SiteOfOrigin授权的使用方式就跟我之前的经验是一致的,他的相对路径是相当当前程序执行的路径,只要这个文件存在,就能正常使用。

把图片或音视频资源添加到程序集的方法:在visual studio中,“解决方案资源管理器”->“解决方案”->“项目”->添加->现有项 然后会弹出一个选择框,让选择框显示所有类型的文件,然后就可以看到图片之类的文件了,然后添加就OK了。如果希望添加到某个文件夹下,则右键单击该文件夹,然后进行相同的操作。

还有一点,“解决方案资源管理器”中有两种视图,“解决方案”和“文件夹”之间可以通过“解决方案资源管理器”上面的按钮来回切换的。默认为“解决方案”视图,该视图下感觉才是程序集中的内容?(不知是不是这样理解)这个里面没有的东西,用Application就寻不到?“文件夹”视图就是这个工程文件夹中的所有内容,但这里面的东西如果没有类似添加资源这种操作,是不会显示在“解决方案”视图中的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wpf c#