文档介绍:使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用 Kinect 进行图片浏览
使用 Kinect 进行图片浏览 相信大家都有过在多媒
体触摸设备如手机, 平板电脑上进行照片浏览, 放大、缩小、
旋转等操作的经历。前面有篇文章也介绍了如何搭建开发这
类程序的模拟环境。在了解了 Kinect SDK 后我们就可以使
用无接触的方式隔空的来进行这类操作了。这是不是有点像
Minority Report
里面的感觉。
使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用Kinect进行图片浏览
下面我们就来实现一个简单的使用
Kinect
来进行图片浏
使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用Kinect进行图片浏览
览的小程序。
使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用Kinect进行图片浏览
一、总体思路
首先运用 WPF 编写一个简单的支持多点触控的图片
浏览程序, 这方面您可以参看 MSDN 上的这篇文章, 上面有
代码,可能需要***才能下载。中文的话,您可以参考 Gnie 同学关于在 WPF 上面多点触屏 (MultiTouch) 应用程序的相关文章,这些是基础。
然后,将从 Kinect 骨骼信息中提取到的双手的位置信息,模拟为触摸屏上的点击,这个有点麻烦,也是本文的重点。这方面我参考了 candescentnui 这一开源项目。
下面就来简单介绍下如何实现。
使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用Kinect进行图片浏览
二、具体步骤
(1)完成多点触摸类逻辑的编写
WPF 本身支持触摸屏设备和多点触控,在
下有一个 TouchDevice 类,它表示 触
摸屏上一个手指的产生的单个触摸输入。我们需要继承这个
类,并对其定制将 Kienct 骨骼点数据转换为触摸屏上的单个
输入。为此新建一个名为 KinectTouchDevice
的类并继承 TouchDevice 类和 Idisposable 接口。
internal class KinectTouchDevice : TouchDevice, IDisposable
{
private DateTime? firstTouch;
public Point Position { get; private set; }
internal TouchState TouchState { get; private set; } public KinectTouchDevice(int id, PresentationSource source): base(id)
{
= new Point();
= ;
(source);
}public void Touch(Point position)
{
//记录第一次触摸时间
使用Kinect进行图片浏览
使用Kinect进行图片浏览
使用Kinect进行图片浏览
if (!)
{
= ;
return;
}// 如果不是第一次点击, 但两次间隔小于 100 毫秒,
则认为是一次点击,不做处理
else if
(().TotalMillisecon
ds < 100)
{
return;
}
= position;
if (!)
{
();
}
if ( !=