Condividi tramite


InkManager.ProcessPointerUpdate(PointerPoint) Metodo

Definizione

Nota

Per l'app di Windows universale tramite XAML (Extensible Application Markup Language), è consigliabile usare InkPresenter e il controllo InkCanvas anziché InkManager.

Elabora le proprietà di posizione e stato, ad esempio pressione e inclinazione, per il puntatore specificato, dall'ultimo evento puntatore fino a e includendo l'evento puntatore corrente. Chiamare questo metodo dopo ProcessPointerDown e prima di ProcessPointerUp.

Importante

Questo metodo non è supportato nelle app desktop.

public:
 virtual Platform::Object ^ ProcessPointerUpdate(PointerPoint ^ pointerPoint) = ProcessPointerUpdate;
IInspectable ProcessPointerUpdate(PointerPoint const& pointerPoint);
public object ProcessPointerUpdate(PointerPoint pointerPoint);
function processPointerUpdate(pointerPoint)
Public Function ProcessPointerUpdate (pointerPoint As PointerPoint) As Object

Parametri

pointerPoint
PointerPoint

Puntatore di input per cui devono essere elaborati gli aggiornamenti.

Restituisce

Object

Platform::Object

IInspectable

Quando l'oggetto InkManipulationMode corrente è Input penna o Selezione, questo metodo restituisce il punto (posizione dello schermo nello spazio input penna) associato all'ultimo ProcessPointerUpdate di pointerPoint.

Esempio

Nell'esempio seguente viene illustrato un gestore per un evento PointerMoved in un controllo InkCanvas.

In questo caso, i punti intermedi (intermediatePoints) non elaborati dall'ultimo aggiornamento vengono elaborati da InkManager (inkManager) nella chiamata ProcessPointerUpdate.

void InkingArea_PointerMoved(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
    var pointerPoint = e.GetCurrentPoint(InkingArea);

    if (pointerId == (int)pointerPoint.PointerId)
    {
        switch (inkManager.Mode)
        {
            case Windows.UI.Input.Inking.InkManipulationMode.Erasing:
                // Check if something has been erased.
                // In erase mode, ProcessPointerUpdate returns an 
                // `invalidateRect` (if it is not degenerate something 
                // has been erased). In erase mode we don't bother processing 
                // intermediate points.
                var invalidateRect = 
                    (Windows.Foundation.Rect)inkManager.ProcessPointerUpdate(
                        e.GetCurrentPoint(InkingArea));
                if (invalidateRect.Height != 0 && invalidateRect.Width != 0)
                {
                    // We don't know what has been erased so we clear the render
                    // and add back all the ink saved in the ink manager.
                    renderer.Clear();
                    renderer.AddInk(inkManager.GetStrokes());
                }
                break;

            case Windows.UI.Input.Inking.InkManipulationMode.Inking:
            case Windows.UI.Input.Inking.InkManipulationMode.Selecting:
                // Process intermediate points.
                var intermediatePoints = e.GetIntermediatePoints(InkingArea);
                for (int i = intermediatePoints.Count - 1; i >= 0; i--)
                {
                    inkManager.ProcessPointerUpdate(intermediatePoints[i]);
                }

                // Live rendering.
                renderer.UpdateLiveRender(pointerPoint);
                break;
        }
    }
}

Si applica a

Vedi anche