Вот хорошее решение с использованием официального SDK, но даже если вы этого не сделаете, это может быть очень (!) Полезно (это было для меня):
Вам следует взглянуть на (бесплатный) код, доступный здесь Начало программирования Kinect с примером кода Microsoft Kinect SDK вы нажимаете «Исходный код / Загрузки» и что вас заинтересует в Пример главы 6 (название папки).
В основном они используют статический класс KinectInput
, который позволяет вызывать новое событие, например KinectCursorEnterEvent
, есть менеджер курсоров KinectCursorManager
, который почти все получает положение руки / обновляет курсор ... и они используйте курсор для установки курсора, с FrameworkElement
, который вы хотите использовать в качестве курсора.
Они реализуют HoverButton
, о котором вы говорите. Он запускает событие щелчка по истечении таймера (таймер запускается при наступлении KinectCursorEnterEvent
) Предлагаемое ими решение элегантно и позволяет легко реализовать приятные элементы управления.
Вы можете легко изменить код для обработки двух курсоров (это добавленная стоимость Kinect, не так ли?)
с перечислением CursorSide
:
public enum CursorSide
{
Left,
Right
}
и модифицируйте только KinectCursorManager
, имеющий словарь с емкостью 2, а перечисление является ключом и имеющее указатель на элемент под курсором для каждой руки:
private Dictionary<CursorSide, CursorAdorner> _cursorAdorner;
private UIElement _lastElementOverRightHand;
private UIElement _lastElementOverLeftHand;
Но прежде чем вам нужно будет удалить часть кода, которая делает выбор первичной руки (в основном это рука, ближайшая к Kinect).
Надеюсь, это кому-нибудь поможет: -]
Книга очень интересная, купить ее можно за несколько баксов.