摘要: 在Silverlight 4中支持了麦克风设置的调用,在本节中我们将调用麦克风设备,然后进行录音,并且将录制的声音存取为Wav音频文件。 第一步、首先我们从AudioSink类派生一个音频接收器类:WavAudioSink。其代码如下所示: 第二步、然后我们将编写一个保存音频的函数类,以保存读取到的音频数据:第三步、然后再MainPage.xaml中我们添加三个按钮,分别是开始记录音频、停止录制音频、保存音频文件三个按钮。 第四步、最后在MainPage.xaml.cs代码中我们进行录制、停止、保存音频的操作如下所示 阅读全文
posted @ 2011-05-16 11:09 .NET架构 阅读(2799) 评论(6) 推荐(6)
摘要: 在Silverlight中我们可以捕捉视频设备以制作视频会议系统,或者通过视频设备截图功能上传头像等功能。 下面我们通过一个简单的实例来访问视频设备,并且截取图像下载该截图文件至本地。 一、在Silverlight运行界面中我们检查系统默认摄像头和麦克风是否可用如下图: 在这里我们建立一个Border显示视频图像,然后加三个按钮分别控制摄像头的打开、关闭、截图。最后加一个StackPanel来显示截图的影像。 三、下面请看CS代码如下所示,对于截图保存图片所用函数是在园子里的zhangxuguang2007兄弟那里找的。 阅读全文
posted @ 2011-05-11 09:40 .NET架构 阅读(4797) 评论(4) 推荐(7)
摘要: 在Silverlight中有时需要进入不同的XAML页面,但是一般情况下是不能实现“前进”和“后退”的,在这里我们可以使用Frame+Page控件制作导航功能实现上一页和下一页的跳转功能。 在本文中我们制作一个实例如下:添加一个Frame控件,然后点击“加载UC”和“加载PageShow”按钮加载UC.xaml和PageShow.xaml页面。在加载后我们可以通过鼠标右键菜单中的“上一页”和“下一页”按钮进入上下页,可以访问到历史页面。在UC页面中有一个按钮,点击该按钮“测试按钮”即可进入PageDemo.xaml并且跟入参数,在该页面接收参数显示出来。 首先我们在MainPage.xaml页面中添加一个Frame控件(注意引入System.Windows.Controls.Navigation.dll),并且设置UriMapp 阅读全文
posted @ 2011-05-05 10:08 .NET架构 阅读(4917) 评论(18) 推荐(3)
摘要: 在Silverlight 5 beta版本中,已经支持浏览器模式(in-browser)模式下使用WebBrowser控件访问网页和在浏览器模式下创建txt文本文件。当然想要获得这个功能有三个条件在注册表内添加一个新的键、设置XAP签名(如果是在本地http://localhost:做测试时可以不需要这两个条件)和提升信任级别。 第一、在注册表内添加一个新的键AllowElevatedTrustAppsInBrowser 其名为AllowElevatedTrustAppsInBrowser,DWORD类型,值为1。设置Silverlight允许访问一些本地资源。第一、在注册表内添加一个新的键AllowElevatedTrustAppsInBrowser 其名为AllowElevatedTrustAppsInBrowser,D 阅读全文
posted @ 2011-04-28 10:50 .NET架构 阅读(5670) 评论(19) 推荐(6)
摘要: 本节讲诉两个新特性:一、在Silverlight 5中可以控制MediaElement对象播放的视频进行快进快退控制。二、在Silverlight 5中的文字项进行搜索查询。 一、对于MediaElement媒体播放对象的视频进行快退快进控制 它是通过MediaElement.PlaybackRate属性进行控制的。当前此属性只支持-8.0、-4.0、0.5、1.0、2.0、4.0、8.0七个参数,也就是快退8倍速、快退4倍速、慢放0.5倍速、正常速度、快进2倍速、快进4倍速、快进8倍速。现在我们看本实例中的MediaElement对象控制源码如下: 二、TextSearch对象对文字项查询 它是在Silverlight 5中新增的一个类TextSearch,在所有的具有Item属性的文 阅读全文
posted @ 2011-04-26 10:18 .NET架构 阅读(2397) 评论(1) 推荐(7)
摘要: 在Silverlight 5中新增了自定义扩展标记,它通过继承于 MarkupExtension 类,重载该类中的ProvideValue方法以判断得到相应的返回值,以设置被绑定控件的属性。 下面我们通过一个最为简单的实例来理解自定义扩展标记是如何工作的。 第一步:新建一个UserMarkExtension.cs类,注意UserMark(扩展标记名)+Extension.cs(固定的后缀)=UserMarkExtension.cs 第二步:设置3个可被访问的属性标签LBText,LBWidth,RcRadius 第三步:重载PrivideValue函数,设置返回的属性值, 三个步骤的UserMarkExtension.cs类代码如下: 第四步:为需 阅读全文
posted @ 2011-04-25 10:46 .NET架构 阅读(2346) 评论(1) 推荐(6)
摘要: 在Silverlight 5中添加了相对上层元素属性的绑定,还有Style Setter也可以绑定数据。 一、相对上层元素属性的绑定 它是在元素内部的子孙级元素中的某一些属性可以绑定为祖先级元素的某一些属性。比如说再一个ListBox的Tag元素值为:“这是第一个父级绑定”,在ListBox.Templete下面添加一个TextBlock元素的Text属性设置为 ,这样子当ListBox有数据集合的时候显示的数据行就是值“这是第一个父级绑定”。 下面我们来看完整的XAML源码(MainPage.xaml): 阅读全文
posted @ 2011-04-22 09:53 .NET架构 阅读(3273) 评论(14) 推荐(11)
摘要: 在Silverlight 5中新增了一个SoundEffect类和SoundEffectInstance类用以加载wav格式的音乐,这样可以很及时的为动画添加音效。 现在我们看如何使用这两个类来控制播放wav音乐,首先引入mav音乐格式的文件(音频采样大小必须为16或者8位不能是24位,采用PCM编码,22.5, 44.1 or 48khz的采样率)如下图属性: 其次将引入的wav格式音乐文件在项目中右键点击其属性设置其“生成操作”为“内容”,如下图所示:现在我们准备XAML代码以控制SoundEffectInstance类的属性,调节音乐播放效果: 阅读全文
posted @ 2011-04-21 10:10 .NET架构 阅读(2798) 评论(5) 推荐(4)
摘要: 在Silverlight 5中新增了鼠标双击和多重点击的实现,当然在这里包括鼠标左键和鼠标右键的双击,多重点击。在Silverlight 5的MouseButtonEventArgs类中新增了一个属性名为ClickCount:获取到触发事件源在单位时间内被点击的次数(注意:单位时间是由操作系统的"控制面板"--"鼠标"--"双击速度"设置的)。 下面我们来看一个实例以判断是否双击还是多重点击,首先我们看实例的XAML代码: 一、我们来看鼠标左键的双击(三重点击类似)判断如下:当双击鼠标左键时得到的效果图如下: 二、在某一些情况下我们需要判断鼠标右键是否双击或者三击的情况,那么我们敲入以下代码即可: 阅读全文
posted @ 2011-04-19 11:47 .NET架构 阅读(3682) 评论(7) 推荐(11)
摘要: 在Silverlight 5中新增了CharacterSpacing属性对文字间距进行控制,增加了RichTextBoxOverflow控件以灵活的对大量文字进行合理的排版显示。 一、CharacterSpacing属性 在Silverlight原来的版本中文字和文字之间并没有一个间距控制属性,这让某一些特殊的文字显示场合排版不易(比如杂志,电子报),在Silverlight 5中引入的CharacterSpacing属性就可以很好处理文字间距,它可用做TextBlock,RichTextBox,Label等文字控件,其具体文字间隔像素计算公式如下:字体大小*CharacterSpacing值/1000=字符间距像素值。比如:10号的字体,CharacterSpacing设置为500那么字符之间的间距=10*500/100 阅读全文
posted @ 2011-04-18 15:05 .NET架构 阅读(3132) 评论(3) 推荐(5)
摘要: 在Silverlight之前的版本中都不能在XAML代码中设置断点以跟踪调试的,在Silverlight 5 beta版中我们将能够为Binding数据的XAML代码设置断点以跟踪调试相应的数据绑定过程。 首先我们新建一个Silverlight 5应用程序,然后准备后台数据代码如下以绑定一个DataGrid控件。 一、现在我们首先开始设置XAML断点如下图所示: 二、运行程序将在设置断点的Xaml代码位置停止,并且我们在下方“局部变量”窗口中可以看到当前的"BindingState"(绑定状态信息)如下图 阅读全文
posted @ 2011-04-16 09:55 .NET架构 阅读(3336) 评论(10) 推荐(6)
摘要: Silverlight 5 beta版本总算于昨日放出,怀着激动的心情今天将开发环境更新为Silverlight 5 beta版本,并且接触Silverlight 5 beta的第一个新特性:OOB模式下的多窗口的弹出显示。 现在我们开始Silverlight 5 Beta版本的安装,首先需要为VS2010打一个VS2010 SP1补丁,然后我们再下载Silverlight 5 Beta Tools for Visual Studio SP1,一步一步安装完毕,最后我们下载Silverlight 5 Features Document 新特性的文档。至此我们即可踏上Silverlight 5开发的征程。 对于Silverlight 5 beta版本下面的新窗口的支持是基于OOB模式下的,所以我们首先新建一个Silverlight 5 阅读全文
posted @ 2011-04-15 16:06 .NET架构 阅读(4370) 评论(20) 推荐(7)
摘要: Json数据是一种轻量级的数据交换格式,它的传输效率比XML更高,在Silverlight的应用起来可以让Silverlight获取数据速度增快,减少传输的字符数量。在本节将用一个实例来讲解如何将一个类序列化为Json数据并且传输到Silverlight端。 实现原理:在服务器端新建一个一般处理程序页面“GetJson.ashx”,使用DataContractJsonSerializer类的WriteObject()函数来将类序列化为Json数据集合,然后再Silverlight端通过DataContractJsonSerializer类的ReadObject()函数来将Json数据还原为类。当然在Silverlight端我们使用WebRequest来下载数据。 首先我们新建一个新的Silverlight应用程序,然后再 阅读全文
posted @ 2011-04-15 10:37 .NET架构 阅读(3672) 评论(15) 推荐(6)
摘要: 在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString。首先我们新建一个名为SLConnectASP.NET的Silverlight应用程序,然后在SLConnectASP.NET.web项目中添加一个Index.aspx的页面。 一、Silverlight和ASPX页面的QueryString传参 实现思路:在Silverlight端跳转到页面到Index.aspx并且传递一个QueryString参数ID,在该Index.aspx页面显示出ID。在Index.aspx页面有一个按钮可以向Silverlight所在页面传递一个参数aspxid,在Silverlight端读取aspxid参数并且显示出来。 首先我们看Silverlight后台代 阅读全文
posted @ 2011-04-14 10:23 .NET架构 阅读(4734) 评论(3) 推荐(7)
摘要: 在silverlight实际项目中时常会需要播放视频和打印文档,在本节中我们将制作一个最简单的播放视频和打印文档的实例。 一、播放WMV视频 首先我们创建一个Silverlight应用程序SLShowVideo,然后放一个示例Wmv视频在SLShowVideo.web项目的根目录下面。 然后我们在Xaml文档中放入一个MediaElement控件,并写入以下代码: 最后我们写入以下代码加载视频并且控制视频的播放: 二、打印文档 首先我们看XAML文档。添加一个Canvas元素,元素内的所有内容就是我们即将要打印(当然你也可以设置打印Grid等元素的内容)。 阅读全文
posted @ 2011-04-13 10:11 .NET架构 阅读(3672) 评论(7) 推荐(8)
摘要: Silverlight中的事件分为普通事件和冒泡路由事件,它并没有包括WPF中的隧道路由事件,在本章中将详细讲解冒泡路由事件和如何注册一个冒泡路由事件。 一、细解冒泡路由事件 冒泡路由事件可以比喻为:一个父对象X包含子对象A,在子对象A中没有事件处理程序,但是父对象X中有一个鼠标左击事件处理程序。当用户点击子孙对象A时,这个事件又鼠标左击冒泡传递到父对象X。父对象的事件处理程序就处理这次点击事件。 总结出来就是:冒泡路由事件是从子孙的元素传递到父对象事件处理程序中进行处理的一种解决方案,直到这个事件传递到最上层根对象。 如果子对象有这类路由事件(如:MouseLeftButtonDown)的. 阅读全文
posted @ 2011-04-11 16:16 .NET架构 阅读(3910) 评论(6) 推荐(6)
摘要: Silverlight中我们经常使用自定义控件,并且在自定义控件中制作自定义属性,在项目中大量的创建这个自定义控件,每次都需要占用内存来创建这个属性的默认值。可很多时候我们都只需要去使用这个属性的默认值就可以,并不用每次都使用这个属性。所以在Silverlight和WPF中引入了依赖属性这个概念,以节约内存并且可以灵活的使用属性。首先我们了解一下Silverlight中有3种属性的创建方式:一、CLR自定义属性。二、依赖属性。三、附加属性。 一、下面我们来看一下CLR自定义属性的创建方式如下,相信大家都创建过: private string _RectWidth; public string. 阅读全文
posted @ 2011-04-07 14:26 .NET架构 阅读(2894) 评论(1) 推荐(4)
摘要: Silverlight的OOB模式(out-of-browser)下可以提升用户操作权限,访问系统API、将Silverlight程序安装在本地计算机上面而不必再浏览器中运行,在本节将讲诉一个只能应用于OOB模式下的WebBrowser控件的简单应用。 首先创建一个新的Silverlight应用程序名为SLBrowser并且设置其运行在OOB模式下,鼠标右键点击SLBrowser项目,选择“属性”。在属性页的“Silverlight”栏下面我们在“允许在浏览器外运行应用程序”打钩。 然后点击“浏览器外设置”按钮,设置窗口的样式,另外在最下面有一个“在浏览器外运行时需要提升的信任”按钮就是提升. 阅读全文
posted @ 2011-04-02 16:12 .NET架构 阅读(3882) 评论(5) 推荐(8)
摘要: Silverlight中我们很多时候需要上传下载数据的时候,在本节将讲述使用WebClient上传String、下载String、上传Stream流、下载Stream流的4个方法和相应的事件。下面我们首先认识一下WebClient类。 WebClient的主要函数如下: •OpenReadAsync 打开流向指定资源的可读流。•OpenWriteAsync 打开一个流以将数据写入指定的资源。这些方法不会阻止调用线程。•DownloadStringAsync 以字符串形式下载位于指定 Uri 的资源。•UploadStringAsync 将指定的字符串上载到指定的资源。这些方法不会阻止调用线程. 阅读全文
posted @ 2011-03-30 15:43 .NET架构 阅读(4325) 评论(9) 推荐(9)
摘要: 在Silverlight中我们时常会遇到需要加载其他已经制作完成的Silverlight程序的情况,在本节中我们使用WebClient下载XAP包形式的Silverlight程序,然后使用反射的方式解析出这个Silverlight的程序加载到本Silverlight程序中。步骤如下: 1 •首先我们使用WebClient类的OpenReadAsync(Uri)方法读取某个Uri位置的XAP文件,可以得到这个XAP的Stream值。 2 •使用Application.GetResourceStream(StreamResourceInfo, Uri)从指定 zip/XAP 包中的某个位置返回资. 阅读全文
posted @ 2011-03-29 16:02 .NET架构 阅读(3660) 评论(16) 推荐(6)
摘要: 本文将建立一个最简单的WCF RIA Services访问数据库的实例,附带有数据库文件,可以在Sql Server中附加数据库,在本文中并没有采用ADO.NET实体数据模型绑定数据库,而是单独写一个类来连接数据库查询数据表并返回值,下面我们看详细步骤。 第一步:首先我们打开VS2010,新建一个Silverlight应用程序项目SLGetDataFromWCFRIA。 第二步:点击确定之后,在弹出的“新建Silverlight应用程序”窗口中,选中“启用 WCF RIA 服务”复选框然后确定。 第三步:在创建好的项目中,鼠标右键点击“SLGetDataFromWCFRIA.Web”项目,然. 阅读全文
posted @ 2011-03-28 15:39 .NET架构 阅读(7149) 评论(30) 推荐(6)
摘要: 雷达扫描图中当雷达指针转动扫描到某一个点上的时候,判断这个点的CPU值是否已经超过60的警戒位置如果超过将此点设置为红色。 在Silverlight中我们的雷达指针是一直在做圆运动的,我们要随时检测雷达指针的位置,以及雷达是否碰撞到一个Device设备了。如果碰撞到了,就检测设备CPU值为多少?在这里我们需要解决两个问题。第一、如何随时观测雷达指针的当前位置?第二、如何检测雷达指针是否碰撞接触到了设备点? 针对第一个问题,需要做以下处理: •在本例中使用Timer控件,每隔50毫秒检测一次当前的雷达指针控件位置 •雷达指针的位置根据检测当前雷达指针旋转角度的正余弦函数得到左上角点的X、Y位置. 阅读全文
posted @ 2011-03-21 16:59 .NET架构 阅读(3082) 评论(2) 推荐(8)
摘要: 实际项目中,我们模拟一个监控多台电脑的雷达扫描图效果。我们假设发现了很多台设备,这些设备具有CPU使用率这个属性,在雷达扫描的时候,如果CPU的值高于90则报警为红色。 本节实例建立在上一节的基础之上,在本节中我们将向雷达扫描图中随机投放多台设备点,这些点拥有X坐标和Y坐标的属性以设置它在雷达扫描图中的位置,并且有一个闪动的动画效果。新建一个自定义控件命名为Device.xaml。 第一步计算设备的X、Y坐标设置CPU的信号值Value。在这里使用Random对象rom.Next(Math.Sin(45)*250)函数来随机得到设备的X坐标和Y坐标,暂时先以(0,0)点为中心坐标的250半径. 阅读全文
posted @ 2011-03-19 13:58 .NET架构 阅读(2838) 评论(6) 推荐(6)
摘要: 在现实生活中的雷达运行扫描到物体的某一些属性(比如:速度,频率)超过安全范围值将会报警。在实际的某一些项目中(比如监控系统),我们也想制作一个雷达扫描图来模拟扫描各种设备那么应该如何做呢? 我们将各种设备作为雷达需要扫描到的点,然后在每次扫描的时候扫描这些点,如果指针扫描碰撞到这些点的时候,会触发一个碰撞实际,以检测设备的项属性是否超过正常范围值。如果超过则让其闪亮不同的颜色。本节将讲诉如何制作一个雷达扫描图的基本框架如下。 第一步制作一个雷达图的背景 第二步雷达图的指针围绕中心点不停旋转 第三步为了让雷达图的效果看起来更美观一些,我们应该让指针后面绘画一个倾斜的拖影效果 首先我们使用Pho. 阅读全文
posted @ 2011-03-17 16:45 .NET架构 阅读(4975) 评论(5) 推荐(8)
摘要: 在实际项目的多线程操作中我们用得最多的应该是ThreadPool线程池了,它可以非常方便的在线程池中使用线程来处理耗时的函数,且当函数操作完成之后会释放该线程以待下一次使用,而不用像Thread线程处理那么麻烦。 在每个应用程序中只能有一个线程池,所以线程池全是静态方法而不必实例化,当然线程池里的可用线程也是有限制的(比如:当前系统支持每次处理50个任务,我们要求它处理150个任务,那么它就会堵塞),所以系统中合理的利用线程池比一味的全用线程池更重要。 本节将讲诉一个在Silverlight中运行ThreadPool的最简单的操作方法,其流程如下: 第一步、ThreadPool.QueueU. 阅读全文
posted @ 2011-03-16 15:18 .NET架构 阅读(3073) 评论(9) 推荐(6)