InkManager.ProcessPointerUpdate(PointerPoint) メソッド

定義

注意

拡張アプリケーション マークアップ言語 (XAML) を使用するユニバーサル Windows アプリの場合は、InkManager の代わりに InkPresenterInkCanvas コントロールを使用することをお勧めします。

指定したポインターの位置と状態のプロパティ (圧力や傾きなど) を、最後のポインター イベントから現在のポインター イベントまで処理します。 ProcessPointerDown の後、および ProcessPointerUp の前に、このメソッドを呼び出 します

重要

このメソッドは、デスクトップ アプリではサポートされていません。

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

パラメーター

pointerPoint
PointerPoint

更新を処理する入力ポインター。

戻り値

Object

Platform::Object

IInspectable

現在の InkManipulationModeInking または Selecting の場合、このメソッドは pointerPoint の最後の ProcessPointerUpdate に関連付けられた Point (インク空間内の画面位置) を返します。

次の例では、InkCanvas の PointerMoved イベントのハンドラーを示します。

ここで、最後の更新以降に処理されていない中間ポイント (intermediatePoints) は、ProcessPointerUpdate 呼び出しの InkManager (inkManager) によって処理されます。

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;
        }
    }
}

適用対象

こちらもご覧ください