Архив

Записи с меткой «Silverlight»

Сенсорный поддержки в Silverlight

8 октября 2010 2 комментария

Это сообщение является модификацией MSDN статей входного мультитач и жесты поддержки Телефон для Windows , а краткий обзор и ссылки для себя на поддержку сенсорного Silverlight.

Обзор

Ниже диаграмма классов показывает ключевые классы для поддержки Silverlight ощупь:

Silverlight Touch Class Diagram

  • Нажмите
    • Сенсорный события являются асинхронными.
    • Сенсорный события всегда сжигают на уровне приложений с помощью сенсорной . FrameReported события.
    • Так как события прикосновения являются глобальными, они являются прямыми, и нет необходимости для сенсорного захвата.
    • Мультитач поддерживается.
  • Манипуляция
    • Манипуляция события, предоставляемые UIElement. Они направляются событий.
    • Манипуляция события всегда сжигают, IsManipulationEnabled свойство не поддерживается.
    • Манипуляция события являются синхронными.
    • Только перевод и расширения поддерживаются, вращение не является.
    • Параллельно несколько манипуляций, не поддерживаются.
    • Жест не поддерживаются напрямую. Она поддерживается XNA и Silverlight для Windows Phone Toolkit .
  • Управление: на Windows Phone 7, ScrollViewer поддерживает панорамирование и фильм, кнопка поддерживает вкладки.

Silverlight 3

Требования к платформе

Multitouch требует окружающую среду (устройства, платформы и операционной системы, хостинг приложений, таких как браузер), которые могут распространяться сенсорного ввода для отдельного приложения, такие как Silverlight-приложения.

Windows 7 поддерживает мультитач ввод на уровне операционной системы. Это подтверждается, в частности путем сообщения ( WM_TOUCH ). Уже на этом уровне, то операционная система предусматривает поощрение мультитач сообщения сообщения мыши. Акция настоящий мультитач, так что пользователи могут использовать прикосновения и жесты, чтобы заменить как перемещение мыши или мыши. Это полезно при взаимодействии с приложениями, которые не могут быть сенсорными известно, и приложение не все его пространственной обработки ввода с помощью мыши событий и сообщений. Windows 7 также сливается сообщения, когда необходимо, чтобы приложения не нужно обрабатывать переполнение промежуточных сообщения, что все создания дополнительных мероприятий.

Internet Explorer версии 8, а браузер хост также мультитач известно. Internet Explorer версии 8 вперед платформа мультитач сообщения плагинов, таких как Silverlight, работающие в Internet Explorer, например, что Silverlight приложения могут взаимодействовать с мультисенсорного ввода.

Multitouch Вход для Silverlight (см. для IE8 хоста)

Multitouch Input and Platform Input in Silverlight

Multitouch также поддерживается для Silverlight в текущей версии Firefox хостов, работающих на Windows 7, и вне браузера приложения, работающие на Windows 7. Тем не менее, ввод мультитач не поддерживается для приложений, работающих в полноэкранном режиме.

Регистрация на Multitouch

В рамках более широкой архитектуры платформы мультитач, каждое приложение, которое хочет получить мультитач сообщения должны зарегистрировать свой ​​HWND (Touch API для Windows 7 включает в себя RegisterTouchWindow для этой цели). Silverlight 4 во время заботится об этом шаге регистрации и регистрирует Silverlight в качестве исполнения и всех приложений, использующих Silverlight в качестве исполнения. Поэтому обычно нет необходимости взаимодействовать непосредственно с платформы код для обработки мультисенсорного ввода. Тем не менее, характеристики мультитач сенсорный взаимодействия в рамках API для Windows 7 и Silverlight 4 мультитач довольно специфический:

  • Silverlight 4 зарегистрирован на сырье и сенсорного ввода, а не жесты. Если ваши требования включают в себя жесты, вы должны обработать сенсорный ввод в жесты с помощью собственного кода приложений, в рамках Silverlight. Кроме того, вам может потребоваться большее взаимодействие дизайна, так что вы можете включить отдельный HWND то есть мультитач жесты зарегистрировано от платформы, и взаимодействует с области содержимого Silverlight.

  • В общем, Silverlight 4 поддерживает сенсорного ввода сырья на события мыши. (Тем не менее, на уровне touchframe основе, вы можете отключить продвижение по службе, как это описано в последующих разделах этой темы.)

  • В множество, некоторые жесты могут способствовать браузера хост стать событий, кроме MouseDown / MouseMove / MouseUp.

Продвижение на события мыши

Продвижение мыши явление существует, так что мультитач пользователи могут использовать прикосновения и жесты, чтобы заменить как перемещение мыши или мыши. Концептуально это значение по умолчанию, потому что приложения, которые появились или не считают мультитач не будет знать, что API позвонить выполнить продвижение по службе, и, следовательно, платформа делает мышь продвижение в большинстве случаев. Silverlight 4 закрепляет общее понятие мыши продвижение событие по тем же причинам. Любая существующего элемента управления Silverlight может иметь обработчики событий мыши, но не специально для мультитач события. Например, кнопки можно было бы ожидать, чтобы действовать, как будто нажата, когда пользователь использует мультитач устройств взаимодействовать с ним.

Продвижение мыши событие имеет потенциал для события дуализм в тех случаях, когда есть преднамеренное обработки кадра мультитач и точки соприкосновения. В теле обработчика события мультитач Silverlight, вы можете приостановить продвижение событий мыши на время первичного касания. Например, если вы хотите создать сенсорной кнопки известно, что выполняются различные действия, основанные на сенсорном характеристики, вы можете приостановить продвижение, так что ваша кнопка не способствуют обычные "мыши" поведения, а вместо этого пошел к дискретной логике о том, как справиться с входом. Для этого позвоните SuspendMousePromotionUntilTouchUp как одна из первых операций обработчик.

Точная природа мыши продвижение не документировано здесь, потому что он представляет собой платформу характеристики. Вообще говоря, механизм сообщений на-сообщение службе.

Нажмите, чтобы жестов

Silverlight обрабатывает сообщения мультитач на уровне исходного сообщения, аналогичные платформы WM_TOUCH, а также доступ к другим API, которые могут захватить Touchpoint характеристики на уровне, что сырье, которые затем подвергаются как Silverlight API. Silverlight изначально не обрабатывать прикосновения к жестами, использовать возможности платформы для этой цели, или процесс WM_GESTURE . (Обработка WM_GESTURE потребует государственной регистрации с платформой, Silverlight 4 не выбирают в.)

Если вы хотите обработать мультитач помощью жестов метафору, ваш код должен обрабатывать события прикосновения и использовать API, предоставляемый под Silverlight 4 и процессов в жестах, с использованием или без использования платформы API для работы с жестами. Это не тривиально.

Сенсорный API

Одним из важных отличий между входными мультитач и другие методы ввод поддерживается в Silverlight (мышь, клавиатура, стилус) является то, что вы регистрируетесь на мультитач события на уровне приложения основе, а не путем добавления обработчиков для конкретных элементов входа ( UIElement объектов). Это согласуется с метафорой, что Silverlight в целом "приложение" зарегистрировано в платформу.

  • Чтобы назначить обработчик мультитач события, назначать обработчик для статического событие Touch.FrameReported . System.Windows.Input.Touch это статический класс обслуживания, который существует исключительно для этой цели с Touch.FrameReported в качестве единственного API.

  • Вы пишете обработчик для Touch.FrameReported основана на TouchFrameEventHandler делегата.

  • В типичном дизайне пользовательского интерфейса, возможно, области пользовательского интерфейса, который вы намерены поддержать конкретные действия в рамках мультитач и других областях, где было бы лучше использовать мышь поощрении и не обязательно обработать входные данные как мультитач. Чтобы определить, где основная точка прикосновения, вы можете оценить общий координат от расположения вашего мультитач известно элемент, и его границы. Смотрите GetPrimaryTouchPoint для получения дополнительной информации и примеров кода.

  • Как упоминалось ранее, вы можете приостановить продвижение событий мыши, как часть вашего TouchFrameEventHandler логики. Для этого позвоните SuspendMousePromotionUntilTouchUp как одна из первых операций.

  • Сенсорный сообщения как сообщили Silverlight 4, как правило, объединены в кадрах, которые начинаются с первичным "вниз" точки касания. Иногда вы заинтересованы только в первый момент прикосновения и первые "вверх" Но кадр может содержать и другие точки соприкосновения и "движение" действия. Чтобы получить доступ к полной коллекции точек в кадре в обработчики, позвоните GetTouchPoints . Для данной точки касания, вероятно, наиболее важной информации является ее позиции .

  • Другие интерфейсы предоставлять информацию, что в платформе API будет найдено в структуре TOUCHINPUT. Примерами таких API являются: TouchFrameEventArgs.Timestamp ; TouchDevice.DirectlyOver ; TouchPoint.Size ; TouchPoint.TouchDevice . В зависимости от вашей ситуации, вы можете не всегда нуждаются в информации подобного уровня.

Манипуляция API в Silverlight версии 4

Silverlight 4 UIElement класс имеет несколько событий, связанных с манипуляциями, а также поддержку событий классы, такие как ManipulationStartedEventArgs . Тем не менее, эти интерфейсы и связанные с ним понятия манипуляции не имеют полной поддержки в Silverlight 4 во время выполнения. Чтобы справиться с этими событиями, приложение должно предназначаться Silverlight для Windows Phone. События существуют в Silverlight 4 сборки, чтобы обеспечить общую поддержку дизайнер для Silverlight 4 и Silverlight для Windows Phone.

    Silverlight для Windows Phone 7

Жест поддержки в Silverlight Framework

Полный список поддерживаемых Windows Phone жесты Silverlight, см. Дизайн пользовательского интерфейса и взаимодействия руководства .

Silverlight для Windows, телефон позволяет обрабатывать сенсорный ввод с помощью манипуляций событий. С помощью этих событий, вы можете перемещать и масштабировать объекты в ответ на прикосновение и сенсорный ввод. События, описанные в следующей таблице.


Событие

Описание

ManipulationStarted

Это событие происходит, когда пользователь начинает прямые манипуляции путем размещения их пальцем или пальцами на экране.

ManipulationDelta

Это событие происходит раз в то время как пользователь перемещается пальцем или пальцами на экране.

ManipulationCompleted

Это событие происходит, когда пользователь удалить их пальцем или пальцами на экране

Note Примечание:

Silverlight элементы управления, которые поддерживают телефоны Windows являются жест известно, и поддержка жестов, таких как кран, кастрюли, и фильм. Вы можете обрабатывать простые жесты, например, кран, двойное нажатие, и нажмите и удерживайте с помощью мыши. Для получения дополнительной информации см. Вход для телефона Windows, темы.

Жест поддержки в XNA Framework

Рамках XNA предлагает надежную систему жестов сенсорной для разработки приложений. Разработчики могут использовать этот встроенный жест системы вместо реализации с нуля. Следующие жесты XNA поддерживаются в Windows Phone.


GestureType

Описание

Нажмите

Касания экрана пальцем и релизов.

DoubleTap

Этот жест представляет собой два краны подряд.

Держать

Касания экрана пальцем и удерживает его на месте в течение короткого периода времени.

FreeDrag

Палец касается экрана и перемещается в любых направлениях.

VerticalDrag

Палец касается экрана, и движется в вверх или вниз.

HorizontalDrag

Палец касается экрана, и движется в левую или правую сторону.

DragComplete

Отмечает конец FreeDrag, VerticalDrag или HorizontalDrag жест.

Фильм

Палец тянется по всему экрану и поднимается без остановки.

Ущипнуть

Два пальца нажмите на экран и передвигаться.

PinchComplete

Этот жест означает конец Pinch жест.

Ниже приведены полезные темы и статьи для реализации жест поддержки в приложениях XNA: