摘要:最近写了个小游戏,想用kinect实现对其的体感控制,所以有关kinect的数据处理就要放在后台线程中,这个可以通过多线程或者并行处理来实现,但是BackgroundWork类可以有事半功倍的效果。下面先介绍下有关该类的知识:BackgroundWork组件主要是用来实现多线程编程,将程式中复杂的运算放在后台线程中,并实时与前台交互,实现快捷的系统交互体验BackgroundWork的主要属性,方法,事件如下:重要属性:1、CancellationPending 获取一个值,指示应用程序是否已请求取消后台操作。通过在DoWork事件中判断CancellationPending属性可...
阅读全文
摘要:看到一个kinect大牛编写的一个水果忍者的体感游戏版本,让我为自己一直以来只用现有的网页游戏来模拟kinect体感游戏控制感到惭愧,没办法,我还是菜鸟。学习一段后自己模仿星际大战这个游戏,自己写了一个模仿版(对这个游戏我想大家是不陌生的),但是当我开始添加有关kinect控制代码时,突然系统报错“混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集”,调断点看了下问题出在程序集引用上,因为是在.net 2.0版本上写的游戏,可是kincet软件要求是4.0以上版本,So.....出现了这个问题。解决方案先给出来:在项目主
阅读全文
摘要:上次在谈到API处理窗体的一些方法时,有个问题没有解决,就是想在找到目标窗体的前提下,让目标窗体和其它窗体同时出现在桌面上,同时要保证只有目标窗体是处于激活状态,也就是说只有目标窗体可以接受到模拟按键消息。终于找到了,可以通过SetForwardWindow(int handle)方法将目标窗体激活并处于最前窗体。同时利用另外一个API函数SetWindowPos来设置其他窗体,使其可以同处桌面。下面就简单介绍下这个方法:static extern bool SetWindowPos( HWNDhWnd,//窗口句柄 HWNDhWndInsertAfter,//排列顺序的句柄 intX,...
阅读全文
摘要:不熟悉API使得我为了实现一个简单的功能浪费了很长的时间,下面就把自己查阅的相关东西做个总结:常用的处理窗体的API函数如下(注意:API函数必须放在窗体中...):使用C#语言,要引用DllImport,必须要添加using System.Runtime.InteropServices命名空间(1)获得当前前台窗体句柄[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]public static extern IntPtr GetForegroundWindow();返回值类型是In
阅读全文
摘要:CLR事件模型通俗说就是直接事件模型。事件的前身就是消息(Message),Windows是消息驱动的操作系统,运行其上的程序也遵照这个机制运行。消息本身就是一条数据,这条数据里记载着消息的类别,必要的时候还记载一些消息参数。比如,当你的窗体上按下鼠标左键的时候,一条名为WM_LBUTTONDOWN消息就被生成并加入到Windows待处理的消息队列中,并等待被处理。当Windows处理到这条消息时会把消息发送给你单击的窗体,窗体会用自己的一套算法来响应这个消息,这个算法就是Windwos API开发中的消息处理函数。消息处理函数中有一个多级嵌套的switch结构,进入这个switch机构的消息
阅读全文
摘要:程序的本质是数据加算法,这一点我们在控制台应用中已经能充分体会到,用户给进一个输入,经过算法的处理,程序会反馈一个输出。在这个过程中,数据处于主导,核心地位。然而,自从GUI程序越来越受人们青睐以来,基于UI的“消息驱动”或者“事件驱动”却将数据放到了被动的地位,在一个GUI程序中,数据总是在等待一个事件的触发后才会被处理,同时等待算法执行完后才能在UI控件上显示。如何在GUI编程中把数据的地位从被动变为主动,让数据回归到程序的核心呢?WPF为我们推出了Data Binding机制。应用程序会具有三层结构,即数据存储层、数据处理层和数据展示层。Binding机制作用在处理层和展示层之间,Bin
阅读全文