现在的位置: 首页 > 综合 > 正文

基于kinect的展板软件开发实录(二)

2013年10月23日 ⁄ 综合 ⁄ 共 1810字 ⁄ 字号 评论关闭

       距离开发实录1已经过去两周了,其实demo2在上周3已经做出来了,但是因为期末很多事情,迟迟没有抽出时间来写博客。Demo2的成果主要是在之前的基础上,设计了展板的3D动态主界面。然后现在Demo3也差不多做完了,下一篇博客会记录,主要是完成展板图片的翻页功能和预览功能。

        在这两周的开发过程中,感触最深的就是整个开发跟Kinect有关的部分其实都相对简单,难点反而在WPF上。怎样做出风格和交互良好的界面对初学者来说还是比较困难的。所以我们讨论后决定还是要认真学习C#和WPF,毕竟磨刀不误砍柴工的。在学习C#上,我花半天完整的看了一遍CSharp4.0.chm,然后找了1个小项目认真理解了一下,感受到它语法确实有独特的魅力。然后WPF是这次开发的重头戏,所以我花了2天很系统的把MSDN上WPF部分看了一遍,其中的实例都Run了一遍,很快就掌握了它的基本要领,至于深入研究还要到以后遇到问题时再查询资料了。另外在开发中,处理xaml文件时遇到很多XML的问题,以前只是接触过并没有系统学过,所以也利用W3C
XML
的文档查阅了很多东西。

       在这里我想先谈谈对WPF里面Binding用法的理解,Binding顾名思义就是绑定捆绑的意思。最开始看WPF例子的时候,老是被像<TextBlock Text="{Binding XPath=@Description}" MaxWidth="600" TextWrapping="Wrap"
Margin="30 10" TextAlignment="Justify" FontSize="12"/>这样的语句搞的云里雾里。Binding这个东西对没有接触过WPF的我来说是个很陌生的概念。在MSDN的Data部分非常详细的介绍了Binding的用法,但是内容很多,我这里把自己体会的重点摘录下来。典型的Binding有4个重要部分组成:Binding的目标对象,目标对象的属性,Binding的数据源,还有Path也就是指明从数据源取得的值(即通常写的属性名称,如果是XML的路径则用XPath)。

       例如想要把员工Employee的名字EmpName Binding到TextBox的Text属性上去,分析一下对应的4个组成部分,Binding目标对象TextBox(因为它要最终使用这些数据);目标对象属性是TextProperty(这里要注意,不是Text属性,而是与Text属性相对应的Dependency
Property
,通常命名是属性名+Property);数据源是员工(Employee);PathEmpName。

      在比较理解Binding的工作原理之后,发现它的实质就是数据源和UIElement的捆绑。那么如何保证,数据源的数据改变后,相应的UIElement也能做出适当的反应呢?当一个属性值Binding到某个UIElement的属性上时,如<TextBox
Text=”{Binding Source=Employee, Path=EmpName}” />,当数据源改变时想要让对应UIElement发生改变,需要一个通知机制,最简单的方法是实现INotifyPropertyChanged接口,具体可以参考MSDN上《怎样:实现属性更改通知》这篇文章。如果不实现这个接口,必须自定义一套通知系统,为类里面每个想要实现通知机制的属性创建一个PropertyNameChanged事件,其中PropertyName与属性名对应。除了把UIElement的属性和它对应,还可以将一个Object和UIElement进行Binding,这个在我们项目里用的比较多,应该UIElement都是自己定义的。

    
Binding说了这么多,简单的介绍一下Demo2的界面。说它是主界面,其实就是自己定义的一个UIElement,其中定义了图片的加载方式,旋转和排列显示,因为代码量很大,贴代码不太现实。所以这里用gif图片展示一下简单的效果。如果正在做类似开发的同学想要参考,可以发邮件520034131@qq.com,欢迎交流。


   

 
    到现在这个demo还很简单,也参考了一些国外的资料。demo3完善翻页功能后,我们准备在demo4对整个展板软件进行美化,和根据良好的交互原则来修改界面。到时应该可以做出令我们自己满意的成品来。

抱歉!评论已关闭.