다음을 통해 공유


InkManager.ProcessPointerUpdate(PointerPoint) 메서드

정의

참고

XAML(Extensible Application Markup Language)을 사용하는 유니버설 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

현재 InkManipulationMode수동 입력 또는 선택인 경우 이 메서드는 pointerPoint의 마지막 ProcessPointerUpdate와 연결된 (잉크 공간의 화면 위치)을 반환합니다.

예제

다음 예제에서는 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;
        }
    }
}

적용 대상

추가 정보