10

我正在尝试制作基于手势的 PowerPoint 幻灯片。JavaScript 肯定不会在这里工作,因为我希望我的幻灯片在为 Windows 打开特定的 PowerPoint 文件 (.ppt) 时工作​​。

我用谷歌搜索,在 Leap Motion 论坛上发布了一个问题,但徒劳无功。我主要担心的是:

  1. 我不确定在这里使用什么。是否有一些用于此目的的 SDK?简单来说,如何在我们的系统上为 PowerPoint 文件编写一些自定义代码? Leap Motion 应用程序可以使用 C#、C++、Python、JavaScript、Java、Objective-C 开发

  2. 将Leap Motion 设备的代码与上述代码集成。

如果您回答两点中的任何一个都可以。很抱歉,我无法发布任何代码,因为我对系统本身的基于 PowerPoint 的编程完全陌生。

我对任何可以让我完成任务的语言(C、C#、C++、Java 和 Objective-C)持开放态度。带有一些信息/代码的建议肯定会有所帮助。

我是一名PHPJavaScript开发人员。我希望我是清楚的,而不是被误解。

更新:

我找到了LEAP Motion Controller Add-ins for Microsoft Office 2010/2013 (C#)

4

4 回答 4

8

您发现的用于 Microsoft Office的LEAP Motion Controller 插件可能是将控制器与 Powerpoint 集成的最佳方式。

要开始使用它,您需要 Visual Studio(好像您需要 2012)。Microsoft 有一个Visual Studio 中的 Office 开发概述页面。

按照配置计算机以开发 Office 解决方案页面上的说明进行操作。

下载适用于 Windows 的 Leap SDK,并解压,然后在 Visual Studio 中的项目 GestureLib.NET4.0 中,添加对 LeapCSharp.NET4.0 dll 的引用

对 GestureListener.cs 做一个简单的修复(在第 44 行使用 IsEmpty)。

之后,您应该能够从 Visual Studio 中运行 LEAP Motion Controller 插件。当你这样做时,它会启动 Powerpoint。

“VSTO”是您在此处使用的技术的名称,因此更多信息,请参阅 Google 的“VSTO 插件 powerpoint”。

Add-In 的源代码中,您应该在 Powerpoint 的功能区上看到一个按钮,用于启动和停止 Leap。

查看 ThisAddIn.cs,一旦启动(通过按下功能区上的按钮),控制器应该响应左右手势,分别移动到下一张/上一张幻灯片:-

                if (direction.ToString() == "Right")
            {
                Application.ActivePresentation.SlideShowWindow.View.Next();
                LastGesture = DateTime.Now;
            }
            if (direction.ToString() == "Left")
            {
                Application.ActivePresentation.SlideShowWindow.View.Previous();
                LastGesture = DateTime.Now;
            }

GestureLib 支持其他手势,您可以按照相同的模式进行操作。

于 2013-09-01T10:10:28.993 回答
2

If your aim is just to interact with a PowerPoint presentation then a simple solution might be to use BetterTouchTool.

It's designed for OS X, it works with the Leap Motion Controller, it allows you to map gestures (captured by the LM Controller) to keyboard shortcuts and as long as it's configured correctly, it works whilst it's running in the background.

Essentially, it should be possible to map a swipe with X fingers to the right as a press on the right arrow key - which will advance the presentation to the next slide. And so on.

If, however, you are looking for a programmatic challenge/hoping to make this in to an app for Airspace then you could use something like Apache POI's Java API.

This is a lot more complicated solution, but it does have the benefit that it will run on OS X - and requires you to muck around with some code :).

It seems like the easiest solution would be to follow the example for exporting the slides in to images. You now have a collection of images - one for each PowerPoint slide. This gives you quite a lot of options, such as

  • You can treat this data an an in-memory database (and a web service) and go back to your comfort zone of PHP and JS and use the JS API for the Leap Motion Controller to capture gestures to drive essentially an online picture gallery.
  • You can develop a pure Java solution using the Java API to capture gestures from the Leap Motion Controller and display the data using Swing/JavaFX or in the browser using JSF.
于 2013-08-28T22:14:58.507 回答
2

一个非常简单的解决方案可能如下所示:

  1. 构建基于 LeapMotion API 的基本 C# 应用程序(您可以使用 SDK 中的C# 示例应用程序)。必须允许此应用程序在后台运行。它连接到 LeapMotion 并等待手势。它提供了一个 .NET 远程处理接口(请参阅此处以获取简单示例)并为每个有趣的手势引发一个事件(请参阅此处以获取远程处理的事件示例)。当您使用示例应用程序时,只需将其中的一些替换SafeWriteLine(...)为引发适当的事件。
  2. 使用 C# 构建一个 office 插件(只需使用NetOffice,它是免费的)。此加载项从第 1 步启动后台应用程序,连接远程处理并等待事件。
  3. 当加载项收到事件时,它会触发 PowerPoint 中的相应操作(例如presentation.GotoSlide(presentation.Slides.Count))。
于 2013-09-03T14:26:32.623 回答
0

PowerPoint 和所有办公工具都支持 Visual Basic .net 宏。只需为您的 ppt 文件编写一个 vb 宏,它可以识别手势并触发页面更改操作。这就够了。

如果需要,可以将跳跃运动的 C# 代码集成到您的 vb.net 宏中

于 2013-09-01T20:54:21.680 回答