微软的微软silverlightt详解与用法

您所在的位置: &
Silverlight各版本功能简述
Silverlight各版本功能简述
Silverlight自诞生以来就已Flash的挑战者姿态出现在人们的视线.本文向您简单介绍Silverlight各版本的技术和功能演进,描述Silverlight的发展之路。
从根本上说,是一个用来开发和发布富互联网应用的编程模式。它为网络多媒体体验提供了免费的跨浏览器插件。它还被视为Adobe Flash的替代品。
Silverlight支持微软通用语言运行库(CLR),它可以让设计者和开发者用浏览器运行.NET环境并以相对简单的数据包来实现这一操作。
Silverlight让网站开发公司设计,开发并提供强大的应用和网络体验。它是一个可以支持MacOS,Windows,Linux的浏览器插件。最重要的一点,它是免费的,且只有4Mbs,能在十秒内完成安装。
在Silverlight应用程序中,用户界面以XAML(可扩展应用程序标记语言)格式说明,该语言以xml为基础,是微软用.NET框架的子集来创建富GUI和程序的语言。
Silverlight应用可以托管到任意网络服务器上。最常用的两个网络服务器是微软IIS和Apache。
微软Silverlight通过网络和移动设备提供了富互联网应用的体验和高质量的互动视频,微软Silverlight对现有的开发技巧进行了扩展和延伸,可以让我们创建新类型的网络应用程序而不需要顾虑目标平台和浏览器。
微软还推出了一款名为Silverlight Streaming的免费服务,程序员可以使用该服务保存多达4GB的Silverlight应用程序,从而排除了程序员有关存储的后顾之忧。
有各种版本的Silverlight,包括Silverlight 1.0,Silverlight1.1,Silverlight 2以及最新推出的Silverlight 3。
Silverlight 1.0
Silverlight1.0适用于Mac和Windows。Silverlight 1.0侧重启用浏览器中的富媒体情境。我们只能使用Java脚本来创建1.0版本的Silverlight应用。
Silverlight 1.1
Silverlight 1.1将包含跨平台版本的.NET框架,且会在浏览器中允许富.NET开发体验。它包含了我们现在所使用的完整.NET框架基础类库的一个子集,包括对于集合,泛型,IO,线程,全球化,网络(包括网络服务和REST支持),HTML DOM,XML,本地存储和LINQ的支持。我们将能够使用任意.NET语言来开发Silverlight应用(VB,C#,JavaScript,Python,Ruby,Pascal等)。
Silverlight 2
Silverlight 2包含了一个跨平台,跨浏览器版本的.NET架构,且启用了运行于浏览器中的富.NET开发平台。程序员可以用任意.NET语言来编写Silverlight应用(包括VB,C#,JavaScript,IronPython和IronRuby)。Silverlight 2.0大大快于以前的版本。
Silverlight 3
Silverlight 3是最新版本的Silverlight,它刚刚才在七月推出,有望成为富互联网平台的首选。这一最新版本的Silverlight具备三维图像支持以及将图像作业卸载到GPU的能力,从而为用户带来更顺畅,更快捷的体验。
Silverlight为智能客户商业程序开发提供了强大功能,其网络部署和导航性能都非常棒。该工具代表着未来的开发选择,Silverlight应用程序将为网站应用开发带来新的局面。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
AngularJS是很多Web开发人员在打造单页面应用程序时的首选创建方
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
讲师: 35人学习过讲师: 17人学习过讲师: 246人学习过
自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源
1314的的日子在,在忙忙碌碌中过去了。一周五天,中间
本期开发频道重点推荐是2013年开发频道重点推荐的最后
本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部构造,包含了非常全面的编程参考。它提
51CTO旗下网站基于Silverlight打印的使用详解,是否为微软的Bug问题
字体:[ ] 类型:转载 时间:
本篇文章对Silverlight打印的使用进行了详细的分析介绍,需要的朋友参考下
1:新建Silverlight4 应用程序,名称为SLStudy。建好后如下:
2:在SLStudy下新建Silverlight用户控件,Print1.xaml作为要打印的控件。
在Print1.xaml里面添加代码为: 代码如下:&Grid x:Name="LayoutRoot" Background="White"&&&&&& &Button&这是第一个例子,简单的按钮&/Button&&/Grid&3:已经建立好了要打印的内容了,这里打印的是一个按钮。
4:修改MainPage.xaml代码如下: 代码如下:&Grid x:Name="LayoutRoot" Background="White"&&&&&&&& &StackPanel&&&&&&&&&&&& &Button x:Name="btnPrint1" Click="btnPrint1_Click"&Print1&/Button&&&&&&&& &/StackPanel&&/Grid&5:后台代码为: 代码如下:private void btnPrint1_Click(object sender, RoutedEventArgs e)&&&&&&& {&&&&&&&&&&& PrintDocument printDocument = new PrintDocument();&&&&&&&&&&& printDocument.PrintPage += new EventHandler&PrintPageEventArgs&(printDocument_PrintPage);&&&&&&&&&&& PrintDocument.Print("要打印的文档的名称,这个可以随便设置");&&&&&&& }
&&&&&&& void printDocument_PrintPage(object sender, PrintPageEventArgs e)&&&&&&& {&&&&&&&&&&& e.PageVisual = new Print1();&&&&&&& }
在SL4 中提供打印功能的是PrintDocument类,所以先实例化一个该类对象。
接着注册一个PrintPage事件,PrintPage事件在打印的时候会触发。
然后调用printDocument的Print方法来打印。
在PrintDocument的PrintPage事件中,PrintPageEventArgs,是打印的参数。
里面可以获取当前打印机的一些信息。
在这里设置PageVisual,也就是要打印的对象就可以了。 代码如下:void printDocument_PrintPage(object sender, PrintPageEventArgs e){& e.PageVisual = new Print1();}全部写好后,可以运行应用程序,点击Print1,弹出打印窗口。打印效果如下图:
当然我们的打印需求不可能这么简单,也许需要设置Print1的内容。假设我们要修改按钮显示的字,那么我们可以这样: 代码如下:void printDocument_PrintPage(object sender, PrintPageEventArgs e){&&& Print1 printVisual = new Print1();&&& printVisual.btnSample.Content = "修改后的值,当然也可以从数据库中获取";&&& e.PageVisual = printV}通过设置PrintPageEventArgs 参数的PageVisual对象,我们就可以实现打印那个页面的功能了。
在这里我总结下:
<FONT style="COLOR: #:确定要打印的内容,然后新建一个UserControl来显示打印的内容。
<FONT style="COLOR: #:新建PrintDocument对象,注册PrintPage事件,调用Print方法。
<FONT style="COLOR: #:在PrintPage事件中,构造要打印的对象,然后去数据库中获取数据,然后把数据绑定到控件上,接着把绑定好数据的控件赋值给PrintPageEventArgs的PageVisual 对象。&
多页打印问题:
如果要打印的只有一张,那么这种方法应该就够了,但是有时候需要将一份文档打印多张,
比如将上面的按钮打印5张,那么又该如何实现了。
还记得我们上面PrintPageEventArgs的HasMorePages参数吗?
在PrintPage 事件触发后,默认的HasMorePages 为false。将HasMorePages设置为true,可以让PrintPage事件不断被触发。当 HasMorePages 属性为 true,PrintPage 事件将多次发生,直到 HasMorePages 为 false。
假设我们要将上面的按钮打印5张,那么可以设置4次HasMorePages为true,最后设置HasMorePages为false就可以了。
修改后的printDocument_PrintPage 方法如下: 代码如下:int count = 5;int printCount = 0;void printDocument_PrintPage(object sender, PrintPageEventArgs e){&&& Print1 printVisual = new Print1();&&& printVisual.btnSample.Content = "修改后的值,当然也可以从数据库中获取";&&& e.PageVisual = printV&&& printCount++;
&&& if (printCount & count) //如果已经打印的页数小于要打印的页数,说明还需要打印。&&& {&&&&&&&& e.HasMorePages =&&& }&&& else&&& {&&&&&&& e.HasMorePages =&&& }} 有时候需要知道当前打印的是第几页,这可以通过查询printDocument.PrintedPageCount 属性来获得,
在PrintDocument_PrintPage 方法中,sender对象其实就是PrintDocument对象,所以我们可以将它强制类型转换。
假设我们要将上面的5个 Button的内容都修改为1,2,3,4,5.那么我们可以修改代码为: 代码如下:&&&&&& int count = 5;&&&&&&& int printCount = 0;
&&&&&&& void printDocument_PrintPage(object sender, PrintPageEventArgs e)&&&&&&& {&&&&&&&&&&& PrintDocument printDocument = sender as PrintD&&&&&&&&&&& Print1 printVisual = new Print1();&&&&&&&&&&& printVisual.btnSample.Content = string.Format("按钮{0}", printDocument.PrintedPageCount);&&&&&&&&&&& e.PageVisual = printV&&&&&&&&&&& printCount++;
&&&&&&&&&&& if (printCount & count)&&&&&&&&&&& {&&&&&&&&&&&&&&& e.HasMorePages =&&&&&&&&&&& }&&&&&&&&&&& else&&&&&&&&&&& {&&&&&&&&&&&&&&& e.HasMorePages =&&&&&&&&&&& }&&&&&&& }实际上,我们的printCount变量都不需要了,直接使用printDocument.PrintedPageCount 就可以了,具体代码实现由读者自己实现吧。
微软的Bug??
如果你的打印机设置为
那么打印的结果就是*.xps的文件,但是在打印的过程中会弹出提示框,询问保存地址。
如果你在PrintPage事件中打上断点的话,可以看到在询问保存地址的时候,PrintPage方法已经执行了,也就是说PringPage方法会被执行两遍,第一遍并没有真正的打印。
如果在上图的界面上点击取消,则有可能会导致系统失去响应而卡死,
假设用户点击保存,那么PrintPage事件会再次的触发。
但是由于已经打印了一次了,所以有可能导致在多页打印的时候出现问题。
使用两个标志变量可以解决这个问题。
例如修改代码为:
代码如下:int count = 5;&&&&&&& int printCount = 0;
&&&&&&& /// &summary&&&&&&&& /// 是否是第一次打印,因为只有第二次打印的时候才开始真正的打印。&&&&&&& /// &/summary&&&&&&&& private bool isInitialized =&&&&&&& private bool realPrint =
&&&&&&& void printDocument_PrintPage(object sender, PrintPageEventArgs e)&&&&&&& {&&&&&&&&&&& PrintDocument printDocument = sender as PrintD&&&&&&&&&&& int currentPage = printDocument.PrintedPageC
&&&&&&&&&&& #region 因为要经过两次,第一次是初始化,而第二次才是真正的打印,而两次PrintedPageCount都是0&&&&&&&&&&& if (currentPage == 0)&&&&&&&&&&& {&&&&&&&&&&&&&&& if (isInitialized) //如果已经初始化,则设置realPrint为true&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& realPrint =&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& isInitialized = //运行到这里,说明已经初始化了。&&&&&&&&&&& }&&&&&&&&&&& #endregion
&&&&&&&&&&& if (realPrint)&&&&&&&&&&& {&&&&&&&&&&&&&&& //PrintDocument printDocument = sender as PrintD
&&&&&&&&&&&&&&& Print1 printVisual = new Print1();&&&&&&&&&&&&&&& printVisual.btnSample.Content = string.Format("按钮{0}", printDocument.PrintedPageCount);
&&&&&&&&&&&&&&& e.PageVisual = printV
&&&&&&&&&&&&&&& printCount++;&&&&&&&&&&&&&&& if (printCount & count)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& e.HasMorePages =&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& e.HasMorePages =&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }
因为两次打印,第一次可以被认为是初始化,第二次可以被认为是打印机开始真正的打印,
所以可以使用两个变量isInitialized 和realPrint 来分别表示是初始化还是真实的打印。
在执行第一遍的时候printDocument.PrintedPageCount ==0,在这时候将isInitialized 设置为true。
在执行第二遍的时候,因为isInitialized ==true,所以可以将realPrint设置为true。
在后面的代码中只需要判断realPrint为true就可以了。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具MICROSOFT SILVERLIGHT 4从入门到精通.pdf
扫描二维码,下载文件到手机
当前文件信息
浏览:188次
下载:14次
您的VIP会员已过期,是否续费?
用户应遵守著作权法,尊重著作权人合法权益,不违法上传、存储并分享他人作品。举报邮箱:
京网文[0号 京ICP证100780号weishibo 的BLOG
用户名:weishibo
文章数:32
评论数:11
访问量:9344
注册日期:
阅读量:5863
阅读量:12276
阅读量:404188
阅读量:1093160
[匿名]liuswi:
[匿名]51cto游客:
[匿名]51cto游客:
51CTO推荐博文
今天在微博上, 现任MVP&&遭遇另外一位同行被忽悠的&事件&,详情见此:&&,事儿也简单,也就是技术交流过程中的一问一答, 可最终为什么会导致老徐如此气愤呢?
归根到底,还是天朝技术圈子内的浮躁氛围,缺少踏实做技术的心态有关. 本文就老徐题在MSDN论坛碰到的这事,略作简单回答,如有不正确的地方,请圈内朋友指正!
Q:微软为什么会选择SL作为Windows Phone应用程序的开发框架??
A:回答这个问题,估计要把时间拉回到2008年,微软推出WPF(Windows Presentation Foundation)/WPF E.
WPF是微软下一代的界面表现技术,是微软最新.NET Framework 3.0的四大核心技术之一。WPF基于.NET Framework和DirectX技术,能够让开发出连自己都想象不到眩目界面,同时WPF简化了界面开发技术(WinForms),后来,WPF/e 演化成现在的Silverlight, 当初发布的时候,有很多人都搞不清楚两者之间的关系,也就错以为这2个是相同的技术,其实,两者除了在UI部分使用了相同的XAML语言做为界面显示技术外,本质上是有些不同的。
纵观微软几个核心的技术领域,WinFroms、WPF、Silverlight、ASP.NET and so on&这些技术的本质,无非是底层所使用的框架不同,
在Windows中,诸如窗体绘制等功能都是由GDI来实现,WinForms在底层使用的是GDI+,玩过图形编程的朋友应该不陌生,GDI+也是在C++非托管代码上又包了一层实现的,从而,我们才能使用C#,VB这样的托管编程语言调用GDI+功能绘图。
WPF底层使用的是DirectX, 就是开发游戏时使用的那个技术,WPF原来的代号为:&Avalon&,有朋友戏称:&我佩服&听起来牛X吧? WPF是运行在.NET Framework 3.0架构下,为用户提供界面,2D/3D图形,文档和媒体提供了统一的描述跟操作方法,此时,DriectX也更新到了 DirectX 9/10版本,主要还是在3D渲染引擎也大大改进,你现在用的windows 7 ,windows vista,就是它的功劳。
Silverlight其实在API层你可以看成是WPF的字集或者一个轻量版本。 SilverLight原来设计的初衷是基于浏览器插件,同时,也被业界认定是与flash强有力的竞争对手,它在浏览器中运行,服务器端不需要部署任何环境,客户端只需要安装Runtime浏览器插件,即SL(2,3,4,5)三个版本,而无须安装.net Framework 3.0。所以,SilverLight的运行环境不受操作系统和浏览器的种类限制(更准确的说,是受到较少的限制)。 WPF可以编写Web程序或者桌面应用程序,可以直接编译为独立运行的.exe文件。但有一条,WPF运行时必须安装.net Framework 3.0。
扯了这么多,也都是些老掉牙的事了,貌似还没有归结到:&微软为什么会选择SL做为WP应用的开发框架&这个主题上来,有了前面的开胃菜,你就对接下来要说的,多少会能理解点。
微软的Windows Mobile大家并不陌生,在某个时间段内,市场占有率,开发人员数量,应用数量,也是响当当的,WM的底层则是.NET Compact Framework.
Q:什么是 Microsoft .NET Compact Framework?
A:Microsoft .NET Compact Framework 是针对 Microsoft .NET 计划的智能设备开发框架,是实现 Microsoft 随时随地在任何设备上为客户提供良好体验的目标的关键所在。.NET Compact Framework 将托管代码和 Web 服务带给了智能设备,它允许安全的、可下载的应用程序在诸如个人数字助理 (PDA)、移动电话和机顶盒等设备上运行.
智能设备框架?可下载应用程序?个人数字助理?移动电话?这些词并不陌生,在现在当时看来,是不是挺那么耀眼的?,.NET CF有其不足之处,诸如动画效果、GPU加速、2D/3D图形渲染等,随着移动智能终端的发展,微软手里握着这么多互相补充的技术不用,岂不是傻子?正如:&所说,早在Silverlight2版本时,Win CER3已经支持SL2了,再加上微软的&三屏一云&战略,SL势必会担当重任,
所以,哦,不对,该总结了。。。
老徐也不要生气,那位同行(MSDN的斑竹)的研究方向可能确实不在智能终端这块,但,他直接把你的话去掉问号再还给你,就不对了,650) this.width=650;" class="wlEmoticon wlEmoticon-smile" src="/wp-content/uploads/2012/05/wlEmoticon-smile1.png" alt="微笑" style="border-top-width: 0 border-right-width: 0 border-bottom-width: 0 border-left-width: 0 border-style: border-color: border-image: max-width: 700 -webkit-transition-property: -webkit-box- -webkit-transition-duration: 0.2s; -webkit-transition-timing-function: -webkit-transition-delay: border-top-style: border-right-style: border-bottom-style: border-left-style: " />&,寥寥数语,也未必能把问题说清楚,也可能字里行间有错的地方,望各位指正。
本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 微软silverlight 的文章

 

随机推荐