`
shirlly
  • 浏览: 1644311 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

[转]关于Silverlight资源文件(如:图片)的放置位置及其引用

阅读更多
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
分享到:
评论

相关推荐

    Silverlight客户端获取服务器文件路径或文件流,并直接显示图片

    在本案例中,我们讨论的主题是如何在Silverlight客户端获取服务器上的文件路径或文件流,并直接在客户端显示图片。 首先,我们需要了解Silverlight的安全模型。由于安全限制,Silverlight应用程序不能直接访问...

    Silverlight上传文件一个好例子

    本示例“Silverlight上传文件一个好例子”聚焦于如何利用Silverlight技术实现文件上传功能,这对于构建支持用户交互的Web应用至关重要。 在Web应用中,文件上传功能通常是必不可少的,比如用户可能需要上传图片、...

    Silverlight实现文件下载【很简单】

    本示例“Silverlight实现文件下载【很简单】”聚焦于如何利用Silverlight技术实现在Web应用中进行文件下载的功能。下面我们将详细探讨Silverlight文件下载的原理和实现步骤。 首先,Silverlight文件下载的核心在于...

    Silverlight多文件(大文件)上传项目源码

    总的来说,这个项目展示了如何利用Silverlight技术实现一个高效、用户友好的多文件大文件上传系统,涵盖了前端交互设计、后台处理逻辑以及网络通信等多个方面,对于学习和理解Silverlight及其在实际应用中的能力有着...

    Silverlight多文件上传 v4.2源码

    Silverlight多文件上传 v4.2源码 程序介绍: 提供了几种上传模式,单文件,多文件,集成js文件的方式上传文件。 将Silverlight上传工具集成到网页文件中需要进行简单的配置,看 如下各项参数作用。 配置: ...

    Webcast Silverlight视频课程:应用图片

    Webcast Silverlight视频课程:应用图片

    Silverlight图片放大缩小移动

    在本文中,我们将深入探讨如何在Silverlight应用中实现图片的放大、缩小和移动功能。Silverlight是微软推出的一种富互联网应用程序(RIA)技术,它允许开发者创建具有丰富媒体体验和交互性的Web应用。 首先,我们...

    Silverlight 多文件上传

    1. **创建Silverlight应用**:首先,你需要创建一个Silverlight项目,并添加必要的引用,如System.Windows.Controls.Input,它包含了FileInput控件。 2. **设计UI**:在XAML文件中,添加FileInput控件,设置其...

    Silverlight 多文件异步上传文件

    在Silverlight中,通过使用异步编程模型,如`BackgroundWorker`类或事件驱动编程,可以实现文件的非阻塞上传。 2. **多文件上传**:Silverlight支持选择多个文件进行上传。这通常涉及到HTML5的`&lt;input type="file"&gt;...

    clientBin silverlight xap文件

    XAP文件是一种压缩格式,包含Silverlight应用程序的所有组件,包括XAML文件(用于定义用户界面)、代码-behind文件(包含C#或VB.NET代码)、库文件(如DLLs)以及资源文件(如图片、字体等)。XAP文件的扩展名是`....

    Silverlight实现的多图片列表框

    3. **数据绑定**:为了将图片加载到列表框中,开发者可能使用了Silverlight的数据绑定机制,将图片数据(如URL或本地资源)绑定到UI元素上,实现了动态加载和显示。 4. **图片处理**:可能包含图片的缩放、裁剪等...

    Silverlight文件上传源码

    Silverlight上传工具支持多文件上传,上传之前预览图片窗口可以调整图片大小,独立进度和整体进度显示,快速上传,ASP.NET服务器控件,并且可以非常灵活的改变程序根据自己的需求。 不同于其他上传控件 .速度非常快...

    Silverlight多文件(大文件)上传项目源码 Demo

    总结起来,这个"Silverlight多文件(大文件)上传项目源码 Demo"是一个实用的学习资源,它展示了如何利用Silverlight克服浏览器限制,实现高效且用户友好的大文件和多文件上传功能。对于想要提升Web应用程序文件上传...

    基于Silverlight的文件管理示例程序

    源代码的分析可以为开发者提供关于如何在Silverlight环境中实现文件管理的深入理解。 【标签】:“Silverlight 文件管理”标签明确了此项目的核心技术与应用场景,即使用Silverlight技术处理文件管理和操作。这涵盖...

    关于silverlight的书

    《关于Silverlight的书》是一本专为Silverlight初学者设计的优秀教程,它深入浅出地介绍了这个强大的富互联网应用程序开发平台。Silverlight是由微软公司推出的,旨在提供跨浏览器、跨平台的交互式用户体验,尤其在...

    Silverlight 源码 图片缩放实例

    在本文中,我们将深入探讨Silverlight技术,特别是关于图片缩放的实现实例。Silverlight是Microsoft推出的一个跨浏览器插件,用于创建丰富的交互式Web应用程序,具有强大的图形处理能力和多媒体支持。图片缩放功能在...

    silverlight多文件上传

    在本项目中,“silverlight多文件上传”指的是使用Silverlight技术实现的能够同时上传多个文件的功能。这种功能在很多网站上都很常见,例如在线文档共享、社交媒体和图片分享平台等。 在Silverlight中实现多文件...

    如何将silverlight中的图片控件保存到文件

    ### 如何将Silverlight中的图片控件保存到文件 在Silverlight开发中,有时我们需要将显示在界面上的图片(通常是由`Image`控件显示)保存为文件,例如为了备份用户界面的状态或者导出数据等。本文将详细介绍如何...

Global site tag (gtag.js) - Google Analytics