Как я могу создать симулированные контакты в приложении на поверхности стола без симулятора? - PullRequest
2 голосов
/ 18 февраля 2011

В проекте Microsoft Surface 1.0 SDK, основанном на WPF, я хотел бы преобразовать контакты, снятые в небольшой части экрана, в соответствии с целым экраном (например, виртуальной сенсорной панелью).

После захвата контакта и изменения его положения и ориентации я хотел бы отправить его обратно в очередь событий. Я уже понял, что, кажется, нет никакого способа создать «новый контакт ()» или изменить что-либо в «ReadOnlyContactCollection» (как его имя уже говорит).

Вот что я пытался сделать:

private void OnContactDown(object sender, ContactEventArgs e)
{
    base.OnContactDown(e);
    e.Contact.Capture(this);

    // transform the contact's center and orientation
    // and write them back into e.Contact via own private method
    // e.Contact = transformContact(e.Contact);

    // keep transformed contact in the event queue
    // so it can be processed at it's new position
    e.Handled = false;
}

Моей следующей идеей было использовать симулятор и автоматизацию для создания SimulatedContacts, но, к сожалению, это не работает на самом столе поверхности, только в симуляторе.

Есть ли способ отправить "виртуальные" контакты (которых нет в необработанном изображении), чтобы они были распознаны поверхностью (без использования симулятора)? Как SurfaceInput.exe отправляет распознанные контакты?

1 Ответ

0 голосов
/ 21 февраля 2011

Surface v1 официально не поддерживает WPF 4.0, но другие выяснили, как взять ввод Surface v1 и направить его в стандартизированные и расширяемые сенсорные API, которые поставляются с WPF 4.0. Взгляните на http://nui.joshland.org/2010/07/how-to-write-surface-applications-with.html для создания собственного «сенсорного устройства», которое преобразует ввод данных Surface в события ввода WPF 4.0. Следуя тому же подходу, вы можете создать другое «сенсорное устройство» самостоятельно, чтобы передать ваши ложные прикосновения.

...