Silverlight中有许多资源文件,例如:图片,音频、视频,甚至XML和XAML等非执行数据文件,在Silverlight中根据资源所处位置的不同而有所区别。
资源文件可分布在我们Silverlight项目的多个位置,在此我们将讨论以下三种情况及其相互间的关系。
1、镶嵌入程序集内
2、在.xap压缩包内而不镶嵌入任何程序集内
3、一个程序集引用另一个程序集内的资源
在操作本文实例前请先准备两个图片,分别是A.jpg和B.jpg,下面我们进入具体实验。
一、建立实验环境
首先,启动VS2008,新建项目,Silverlight应用程序,项目名命名为ResourceLocation,点击确定,VS2008将自动为我们建好了两个项目,一个名为ResourceLocation,一个名为ResourceLocation.Web。在解决方案下添加另一个项目,项目类型为Silverlight类库,项目名为ResourceAssembly,在此项目下,删除系统为我们自动建立的文件Class1.cs,因为我们用不着它。至此,我们在此解决方案下有三个项目,分别名为:
ResourceLocation,
ResourceLocation.Web,
ResourceAssembly
然后,编程项目ResourceLocation的Page.xaml文件,最终代码如下:
Code
<UserControl x:Class=”ResourceLocation.Page”
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
Width=”400″ Height=”300″>
<Grid x:Name=”LayoutRoot” Background=”White”>
<Image Height=”300″ Width=”400″ Source=” ”></Image>
</Grid>
</UserControl>
二、实验过程
1、实验一
选择ResourceLocation项目,点击鼠标右键,跳出菜单,选择添加–现有项,引入我们准备好的图片A.jpg,把它重命名为p.jpg.
修改ResourceLocation的Page.xaml文件,主要是Image控件的Source属性,改为:
<Image Height=”300″ Width=”400″ Source=”p.jpg”></Image>
按F5,运行,我们可以看到图片A.jpg的内容。
回到编辑环境,在项目ResourceLocation.Web的ClientBin目录下,添加–现有项,引入我们准备好的图片B.jpg,把它也重命名为p.jpg.然后修改ResourceLocation的Page.xaml文件
<Image Height=”300″ Width=”400″ Source=”/p.jpg”></Image>
按F5,运行,我们看到的仍然是图片A.jpg的内容。
接下来,我们删除掉ResourceLocation项目中的p.jpg文件
按F5,运行,这下,我们看到的图片内容变成了B.jpg图片的内容。
实验说明:
(1)、由上可知,当资源的分布为
ResourceLocation–p.jpg
ResourceLocation.Web–ClientBin-p.jpg
两个位置时,ResourceLocation–p.jpg资源先被定位,如果此处找不到,再到ResourceLocation.Web–ClientBin-p.jpg处寻找,如果此处也找不找,则会报错。
(2)、Source引用资源的区别
图片放在ResourceLocation中时,引用写法: Source=”p.jpg”
图片放在ResourceLocation.Web–ClientBin中时,引用写法: Source=”/p.jpg”
反斜杠开头的相对路径,代表的相对位置是应用程序运行的根目录,即ResourceLocation.xap压缩包内,若在这其中寻找不到要引用的文件,则相对路径的回退机制自动在在ResourceLocation.xap所在的目录,本例即为 ResourceLocation.Web–ClientBin 目录中寻找加以引用。两个位置都没有,才会发生错误。
不以”/”开头,则代表的相对位置是引用该图片的XAML文件所在的目录,本例即Page.xaml文件所在的ResourceLocation目录。
(3)、资源文件放置的位置:
当我们把图片A.jpg添加到ResourceLocation项目中后,点击此图片,查看它的属性,在”生成操作”栏我们可以看到默认的选项是Resource,它表明,当我们生成项目时,此资源是打包在程序集中的,此时我们引用它可以写成 Source=”p.jpg”,按F5运行,可以直接看到图片。
现在,我们如果把此栏的选项选成:Content,则意味着,我们在生成项目时,此资源将会打包进ResourceLocation.xap文件中,在此情况下,我们重新生成项目,按下F5,运行,可以发现,我们再也看不到图片了(当然,我们要确保在ResourceLocation.Web– ClientBin目录下没有放置此图片 ,否则,系统会到那里去寻找并显示)
先别急,我们对image控件的Source属性进行修改,改成Source=”/p.jpg”,即:加入一个反斜杠,再F5运行,这下,我们可以看到图片了。
这说明,我们在放置资源时,我们可以:
i、直接把资源文件放在ClienBin文件目录下。此时引用要加入反斜杠。如 Source=”/p.jpg”
ii、把资源文件放在与page.xaml同目录下,此时我们有两个选择:
一是把资源文件属性中的“Build Action”栏即:”生成操作”设置为”Resource”。此时资源打包在程序集,此时引用不用加入反斜杠。如 Source=”p.jpg”
二是把资源文件属性中的“Build Action”栏即:”生成操作”设置为”Content”。此时资源打包在.xap压缩包中,引时引用该文件则需要以反斜杠开头。如 Source=”/p.jpg”
那么,上述放法在性能上有什么区别呢:
因为,不以反斜杠开头的图片资源是嵌入到Silverlight程序中,xap文件直接下载到客户端,所以当数据量较大时,不以反斜杠开头的方式加载程序的时间就过长。
以”/”开头自然就没上述问题,但是,以反斜杠开头的话,在xaml中设计预览看不到,只有程序运行才可以看到。
2、实验二
示范如何在一个程序集引用另一个程序集内的资源,这将用到我们上面手工建立的另一个项目ResourceAssembly,在此项目中我们引入资源即图片 B.jpg,并把其名字改为 p.jpg
然后回到项目ResourceLocation,在此项目的引用项我们选择: 添加引用–项目–选择项目ResourceAssembly,即引入我们手功建立的项目。
下一步我们修改ResourceLocation项目的Page.xaml文件,改为
<Image Height=”300″ Width=”400″ Source=”/ResourceAssembly;component/p.jpg”></Image>
文件全文为:
Code
<UserControl x:Class=”ResourceLocation.Page”
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”
Width=”400″ Height=”300″>
<Grid x:Name=”LayoutRoot” Background=”White”>
<Image Height=”300″ Width=”400″ Source=”/ResourceAssembly;component/p.jpg”></Image>
</Grid>
</UserControl>
按下F5运行可以看到图片。
转自:http://www.cnblogs.com/star250/archive/2009/10/15/1583665.html
分享到:
相关推荐
.xap文件是Silverlight应用程序的部署格式,它包含所有必要的资源和代码,如XAML、CLR代码、资源文件等。当用户访问使用Silverlight的应用程序时,.xap文件会被下载到用户的计算机上,并由Silverlight运行时环境解释...
ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...
《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...
"HFSS软件包下的圆锥(圆形)喇叭天线模型制作与参数调整:自主创造,实验验证,全流程教程指导",HFSS圆锥(圆形)喇叭天线 天线模型,自己做的,附带结果,可改参数,HFSS软件包 (有教程,具体到每一步,可以自己做出来) ,HFSS; 圆锥(圆形)喇叭天线; 模型自制; 参数可改; HFSS软件包; 教程详尽。,HFSS圆锥喇叭天线模型:可自定义参数与结果
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
"基于S7-200 PLC与组态王技术构建的智能化新能源汽车电池检测系统上位机软件平台",基于S7-200plc与组态王组态的新能源汽车电池检测系统上位机 ,S7-200plc;组态王组态;新能源汽车电池检测系统;上位机,"基于PLC与组态王的汽车电池检测上位机系统"
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
nodejs010-nodejs-docs-0.10.5-8.el6.centos.alt.x86_64.rpm
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
“基于Cadence Orcad的全面元器件数据库管理系统——全配版与基础版对比分析”,搭建使用Cadence Orcad CIS元器件数据库(默认为Access数据库,如需MySQL数据库需提前沟通),含orcad符号库,Allegro PCB库 —————————————————— 该元器件数据库种类丰富,大分类就有28种(全配版,含有很多如海思,全志,瑞芯微,TI,Xilinx等主流复杂IC的库信息),20种(基础版)。 ———————————————————— 全配版包含1000多种元器件属性信息汇总,都是已验证使用过的,可直接用于自己的电路设计。 全配版还附有大部分与元器件PCB封装已匹配好的的3D模型。 强烈建议原理图库及封装库基于数据库的方式来管理,好处主要有以下几点: 1. 易于管理,可通过数据库文件批量添加、更改或删除器件参数; 2. 减少原理图库的种类, 同类器件只需要新建一次原理图库, 例如不同阻值、精度的电阻; 3. 器件具有唯一性, 每个器件的参数都是唯一的; 4. 方便使用, 如使用 Link Database Part 功能,可以快速完成器件批量替,
1、文件内容:ptlib-devel-2.10.10-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ptlib-devel-2.10.10-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
西门子S7-1200+5轴伺服驱动系统的走工艺对象技术解析——采用脉冲输出驱动方式的控制方法及在全博途V15.1程序中的应用研究。,S7-1200+5轴伺服 走工艺对象 脉冲输出驱动方式 适用于西门子s7-1200+第三方伺服驱动器 全套博途v15.1程序 ,S7-1200;5轴伺服;走工艺对象;脉冲输出驱动方式;第三方伺服驱动器;博途v15.1程序,西门子S7-1200 5轴伺服系统控制程序
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
《四层三列堆垛式立体库控制系统:带解释的梯形图接线原理图及IO分配与组态画面详解》,4x3堆垛式立体库4层3列四层三列书架式立体库控制系统 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,立体库; 堆垛式; 控制系统; 梯形图; 接线图; 原理图; IO分配; 组态画面,"立体库控制系统原理图:四层三列堆垛式书架的IO分配与组态画面"
1、文件内容:pyOpenSSL-0.13.1-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pyOpenSSL-0.13.1-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
基于三菱PLC与MCGS技术的防盗门报警系统:梯形图接线图原理及IO分配、组态画面详解,基于三菱PLC和MCGS的防盗门报警器 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,三菱PLC; MCGS; 防盗门报警器; 梯形图接线图; IO分配; 组态画面,基于三菱PLC与MCGS的报警器系统:梯形图接线与组态画面详解
"COMSOL金膜表面等离子共振(SPR)分析:不同入射角下的共振角度观察",comsol金膜表面等离子共振SPR,不同入射角查看共振角度 ,关键词:comsol金膜表面;等离子共振(SPR);不同入射角;共振角度;分离度;角度调节;材料表面光;生物传感;互动现象;实时分析,"COMSOL研究金膜表面等离子共振: 角度变化影响共振角度"
1. 机器学习与深度学习 机器学习是人工智能的核心领域,旨在通过数据训练模型,使计算机能够从经验中学习和改进。监督学习、无监督学习和强化学习是其主要分支,广泛应用于图像识别、语音处理和预测分析等场景。深度学习作为机器学习的重要子领域,通过神经网络模拟人脑的工作机制,尤其在图像分类、自然语言处理和自动驾驶等领域取得了突破性进展。深度学习模型如卷积神经网络(CNN)和循环神经网络(RNN)已成为许多AI应用的基础。 2. 自然语言处理与计算机视觉 自然语言处理(NLP)使计算机能够理解、生成和处理人类语言,关键技术包括机器翻译、语音识别、情感分析和问答系统。例如,智能助手(如Siri、Alexa)和聊天机器人(如ChatGPT)都依赖于NLP技术。计算机视觉则让计算机能够“看懂”图像和视频,广泛应用于人脸识别、自动驾驶、医疗影像分析等领域。目标检测、图像分割和视频分析等技术正在推动安防、零售和制造业的智能化转型。 3. 强化学习与AI伦理 强化学习通过试错和奖励机制,训练智能体在复杂环境中做出最优决策,广泛应用于游戏AI(如AlphaGo)、机器人控制和资源调度等领域。与此同时,随着AI技术的快速发展,AI伦理和社会影响也成为重要研究方向。如何确保AI的公平性、透明性和隐私保护,以及应对AI对就业和社会结构的潜在影响,已成为学术界和产业界共同关注的焦点。AI的可持续发展离不开技术与伦理的平衡。