В проекте 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 отправляет распознанные контакты?