Informazioni generali sulle modifiche e sull'inerziaManipulations and Inertia Overview

Le modifiche consentono agli utenti di spostare, ruotare e ridimensionare elementi dell'interfaccia utente tramite modificatori.Manipulations enable users to move, rotate, and resize user interface (UI) elements by using manipulators. Un manipolatore può essere un mouse, uno stilo (in uno scenario abilitato per il tocco) o un dito.A manipulator represents a mouse or (in a touch-enabled scenario) a stylus or a finger.

L'inerzia emula il comportamento reale per gli elementi dell'interfaccia utente in movimento simulando le forze di attrito sugli elementi.Inertia emulates real-world behavior for UI elements that are in motion by simulating friction forces on the elements. Ciò consente di rallentare gradualmente il movimento (lineare e angolare) degli elementi prima dell'arresto completo.This enables elements to gradually slow their movement (both linear and angular) before coming to a stop. Questo articolo fornisce un'introduzione alle modifiche e all'inerzia per .NET Framework.This article provides an introduction to manipulations and inertia for the .NET Framework.

ModificheManipulations

Una modifica considera una raccolta di manipolatori come un oggetto composito.A manipulation treats a collection of manipulators as a composite object. Un'applicazione può rilevare le modifiche all'oggetto composito anziché ai singoli componenti.An application can track the changes to the composite object instead of the individual components.

Prendere in considerazione l'immagine nella figura seguente.Consider the image in the following illustration. Un utente può usare due manipolatori per spostare, ruotare e ridimensionare l'immagine.A user can use two manipulators to move, rotate, and scale the image. Le modifiche apportate a ogni manipolatore vengono interpretate insieme agli altri manipolatori.The changes to each manipulator are interpreted together with the other manipulators.

Ad esempio, se si hanno due manipolatori (1 e 2) nell'immagine e si sposta il manipolatore 1 in una direzione +Y (in basso), la modifica all'immagine dipende dalle azioni del manipolatore 2.For example, if you have two manipulators (1 and 2) on the image, and you move manipulator 1 in a +Y direction (down), the change to the image depends on what happens to manipulator 2. Se anche il manipolatore 2 viene spostato in direzione +Y (in basso), l'immagine viene semplicemente spostata in direzione +Y.If manipulator 2 also moves in the +Y direction (down), the image simply moves in the +Y direction. Tuttavia, se il manipolatore 2 non viene modificato o viene spostato in direzione -Y (in alto), l'immagine viene ridotta o ruotata.But if manipulator 2 does not change, or it moves in a -Y direction (up), the image is made smaller or rotated.

Foto modificata con due dita.A virtual photo that two fingers are manipulating.

Immagine modificata da due manipolatoriAn image being manipulated by two manipulators

L'elaborazione delle modifiche fornisce un framework che consente di monitorare un subset di manipolatori e di interpretarli collettivamente, anziché in modo indipendente.Manipulation processing provides a framework that monitors a subset of manipulators and interprets them as if they are acting together, instead of independently. È possibile creare diversi oggetti del processore di modifica contemporaneamente, uno per ogni elemento dell'interfaccia utente da modificare in un'applicazione.You can create several manipulation processor objects simultaneously, one for each UI element to be manipulated in an application. Un processore di modifica viene informato sui dispositivi di input che può usare e segnala le modifiche tramite eventi .NET.A manipulation processor is informed of which input devices to observe and it reports manipulations through .NET events.

Un processore di modifica non dispone di informazioni sul particolare elemento modificato.A manipulation processor does not have information about the particular element that is being manipulated. Un'applicazione applica separatamente le modifiche a un elemento specifico dell'applicazione.An application separately applies the changes to an application-specific element. Ad esempio, un'applicazione applica le trasformazioni a un'immagine o la ridisegna per visualizzarla in una nuova posizione oppure con una nuova dimensione o orientamento.For example, an application applies transformations to an image or redraws it to display it at its new location or with a new size or orientation.

Le modifiche vengono create per trasformazioni affini bidimensionali (2D).Manipulations are designed for two-dimensional (2-D) affine transformations. Queste trasformazioni includono la traslazione, la rotazione e il ridimensionamento.These transformations include translate, rotate, and scale.

Parti di una modificaParts of a Manipulation

Una modifica è una raccolta di oggetti Manipulator2D.A manipulation is a collection of Manipulator2D objects. Questa modifica aggregata è rappresentata da un punto di origine e da un'ellisse.This aggregate manipulation is represented by an origin point and an ellipse. Il punto di origine è la posizione media di tutti i manipolatori che stanno modificando un elemento.The origin point is the average position of all manipulators that are manipulating an element. L'ellisse ha un raggio che corrisponde alla distanza media tra l'origine e ciascuno degli oggetti Manipulator2D.The ellipse has a radius that is the average distance from the origin to each of the Manipulator2D objects.

Parti di una modifica. The parts of a manipulation.

Due manipolatori (1 e 2), un'origine e un'ellisse specificano una modificaTwo manipulators (1 and 2), an origin, and an ellipse specify a manipulation

Quando i manipolatori vengono aggiunti, spostati o rimossi in un elemento dell'interfaccia utente, un'applicazione aggiorna l'oggetto ManipulationProcessor2D chiamando il metodo ProcessManipulators.As manipulators are added, moved, or removed for a UI element, an application updates the ManipulationProcessor2D object by calling the ProcessManipulators method. Quando la modifica viene avviata per prima volta, viene generato l'evento Started.When the manipulation first begins, the Started event is raised.

Nota

L'elaborazione delle modifiche è più efficace se usata in un ambiente di aggiornamento basato su frame.Manipulation processing is more efficient when used in a frame-based update environment. L'uso dell'elaborazione di modifiche in un'applicazione Microsoft XNA non presenta problemi perché il framework XNA offre i corrispondenti aggiornamenti tramite il metodo Game.Update.When using manipulation processing in a Microsoft XNA application, this is not a concern because the XNA framework provides frame-based updates using the Game.Update method. In un altro ambiente (ad esempio Windows Form) potrebbe essere necessario fornire una propria logica basata su frame per raccogliere le modifiche e inviarle periodicamente in batch al metodo ProcessManipulators.In another environment (such as WinForms), you might need to provide your own frame-based logic to collect manipulations and periodically send them to the ProcessManipulators method as a batch.

Quando cambia il numero o la posizione dei manipolatori, viene generato l'evento Delta.As the number of manipulators or their position change, the Delta event is raised. Le proprietà dell'oggetto Manipulation2DDeltaEventArgs passato al gestore dell'evento Delta specificano le modifiche apportate a origine, scala, rotazione e conversione dopo l'ultimo evento.Properties of the Manipulation2DDeltaEventArgs object that is passed to the Delta event handler specify changes in origin, scale, rotation, and translation that have occurred since the last event. L'origine della modifica cambia in caso di spostamento, aggiunta o rimozione dei manipolatori.The origin of the manipulation changes when manipulators move, and when manipulators are added or removed. I valori di conversione specificano l'entità del movimento di X o Y inclusa nella modifica.Translation values specify how much X or Y movement the manipulation includes.

Un'applicazione ridisegna l'elemento dell'interfaccia utente usando i nuovi valori.Using the new values, an application redraws the UI element.

Modifica dopo che il contatto A è stato spostato a destra.A manipulation after contact A moved to the right.

Il manipolatore 1 si sposta e causa la modifica dell'origineManipulator 1 moves and causes the origin to change

Quando l'ultimo manipolatore associato alla modifica viene rimosso dall'oggetto ManipulationProcessor2D, viene generato l'evento Completed.When the last manipulator that is associated with the manipulation is removed from the ManipulationProcessor2D object, the Completed event is raised.

Modello di elaborazione delle modificheThe Manipulation Processing Model

Un processore di modifica usa un modello a utilizzo diretto.A manipulation processor uses a direct-usage model. Con questo semplice modello, un'applicazione deve passare tutti i dettagli dell'evento di input al processore di modifica.With this simple model, an application must pass any input event details to the manipulation processor. Un evento di input può essere generato da qualsiasi primitiva di input, ad esempio un dispositivo mouse, uno stilo o un dito.An input event might be raised by any input primitive, such as a mouse device, a stylus, or a finger. Questo processo fornisce un meccanismo di filtro diretto e un modello di utilizzo semplice che consentono all'applicazione di raggruppare in batch gli eventi di input quando necessario.This process provides a direct filtering mechanism and a simple usage model, so the application can batch input events when it is necessary.

Per includere una primitiva di input nel processo di modifica, l'applicazione crea una struttura Manipulator2D dai dettagli della primitiva di input e la passa al processore di modifica usando il metodo ProcessManipulators.For an application to include an input primitive in the manipulation process, it creates a Manipulator2D structure from the details of the input primitive, and passes the structure to the manipulation processor using the ProcessManipulators method. Il processore di modifica genera quindi gli eventi che l'applicazione deve gestire per aggiornare il componente visivo nel modo appropriato.The manipulation processor then raises events, which the application must handle to update the visual component in an appropriate way.

Flusso di modifiche dirette-modello d'uso.The flow of the manipulations direct-usage model.

Modello di elaborazione delle modificheThe manipulation processing model

InerziaInertia

Il processore di inerzia consente alle applicazioni di estrapolare percorso, orientamento e altre proprietà di un elemento dell'interfaccia utente simulando un comportamento reale.The inertia processor enables applications to extrapolate location, orientation, and other properties of a UI element by simulating real-world behavior.

Ad esempio, quando un utente applica dei gesti rapidi a un elemento, questo continua a spostarsi per poi rallentare gradualmente fino ad arrestarsi.For instance, when a user flicks an element, it can continue moving, decelerate, and then slowly stop. Il processore di inerzia implementa questo comportamento facendo in modo che i valori 2D affini (origine, scala, traslazione e rotazione) vengano modificati in un tempo specificato con una velocità di decelerazione specificata.The inertia processor implements this behavior by causing the affine 2-D values (origin, scale, translation, and rotation) to change over a specified time at a specified deceleration rate.

Come per l'elaborazione delle modifiche, anche un processore di inerzia non dispone di informazioni su un determinato elemento dell'interfaccia utente.As with manipulation processing, an inertia processor does not have information about any particular UI element. In risposta a eventi generati in un oggetto InertiaProcessor2D, un'applicazione applica separatamente le modifiche a un elemento specifico dell'applicazione.In response to events that are raised on an InertiaProcessor2D object, an application separately applies the changes to an application-specific element.

L'elaborazione dell'inerzia e quella delle modifiche vengono spesso usate insieme.Inertia processing and manipulation processing are often used together. Le interfacce sono simili e gli eventi che generano in alcuni casi sono identici.Their interfaces are similar, and the events that they raise are (in some cases) identical. In generale, l'elaborazione dell'inerzia inizia quando viene completata la modifica dell'elemento dell'interfaccia utente.Generally, inertia processing begins when the manipulation of the UI element is completed. Questa operazione viene eseguita ascoltando l'evento Completed e avviando l'elaborazione dell'inerzia da questo gestore dell'evento.This is accomplished by listening to the Completed event and starting the inertia processing from that event handler.

Vedere ancheSee Also

System.Windows.Input.Manipulations