StylusPlugIn.OnStylusMoveProcessed(Object, Boolean) 方法      
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当触笔移到数字化仪上时,在应用程序 UI(用户界面)线程上发生。
protected:
 virtual void OnStylusMoveProcessed(System::Object ^ callbackData, bool targetVerified);protected virtual void OnStylusMoveProcessed (object callbackData, bool targetVerified);abstract member OnStylusMoveProcessed : obj * bool -> unit
override this.OnStylusMoveProcessed : obj * bool -> unitProtected Overridable Sub OnStylusMoveProcessed (callbackData As Object, targetVerified As Boolean)参数
- callbackData
- Object
应用程序传递给 NotifyWhenProcessed(Object) 方法的对象。
- targetVerified
- Boolean
如果笔输入正确路由到 StylusPlugIn,则为 true;否则为 false。
示例
以下示例创建一个 StylusPlugIn 检查 Down 笔势。 StylusPlugIn订阅方法的OnStylusUpProcessed调用NotifyWhenProcessedOnStylusUp,该方法是从应用程序 UI 线程调用的。 两者之间 OnStylusMove 的关系 OnStylusMoveProcessed 相同。
class RecognizerPlugin : StylusPlugIn
{
    GestureRecognizer recognizer;
    
    // StylusPointCollection that contains the stylus points of the current
    // stroke.
    StylusPointCollection points;
    // Keeps track of the stylus to check whether two styluses are used on the
    // digitizer.
    int currentStylus;
    public RecognizerPlugin()
        : base()
    {
        recognizer = new GestureRecognizer();
    }
    // Collect the points as the user draws the stroke.
    protected override void OnStylusDown(RawStylusInput rawStylusInput)
    {
        // If points is not null, there is already a stroke taking place
        // on the digitizer, so don't create a new StylusPointsCollection.
        if (points == null)
        {
            points = new StylusPointCollection(rawStylusInput.GetStylusPoints().Description);
            points.Add(rawStylusInput.GetStylusPoints());
            currentStylus = rawStylusInput.StylusDeviceId;
        }
    }
    // Collect the points as the user draws the stroke.
    protected override void OnStylusMove(RawStylusInput rawStylusInput)
    {
        // Check whether the stylus that started the stroke is the same, and
        // that the element hasn't lost focus since the stroke began.
            if (points != null && currentStylus == rawStylusInput.StylusDeviceId)
        {
            points.Add(rawStylusInput.GetStylusPoints());
        }
    }
    // Collect the points as the user draws the stroke.
    protected override void OnStylusUp(RawStylusInput rawStylusInput)
    {
        // Check whether the stylus that started the stroke is the same, and
        // that the element hasn't lost focus since the stroke began.
        if (points != null && currentStylus == rawStylusInput.StylusDeviceId)
        {
            points.Add(rawStylusInput.GetStylusPoints());
            // Subscribe to the OnStylusUpProcessed method.
            rawStylusInput.NotifyWhenProcessed(points);
        }
        points = null;
        currentStylus = 0;
    }
        
    // If the element loses focus, stop collecting the points and don't
    // perform gesture recognition.
    protected override void OnStylusLeave(RawStylusInput rawStylusInput, bool confirmed)
    {
        if (confirmed)
        {
            // Clear the StylusPointCollection
            points = null;
            currentStylus = 0;
        }
    }
    // This method is called on the application thread.
    protected override void OnStylusUpProcessed(object callbackData, bool targetVerified)
    {
        // Check that the element actually receive the OnStylusUp input.
        if (targetVerified && recognizer.IsRecognizerAvailable)
        {
            StylusPointCollection strokePoints = callbackData as StylusPointCollection;
            if (strokePoints == null)
            {
                return;
            }
            // Create a StrokeCollection to pass to the GestureRecognizer.
            Stroke newStroke = new Stroke(strokePoints);
            StrokeCollection strokes = new StrokeCollection();
            strokes.Add(newStroke);
            ReadOnlyCollection<GestureRecognitionResult> results = recognizer.Recognize(strokes);
            // If the GestureRecognizer recognizes the stroke as a Down
            // gesture with strong confidence, raise an event.
            if (results[0].ApplicationGesture == ApplicationGesture.Down &&
                results[0].RecognitionConfidence == RecognitionConfidence.Strong)
            {
                //raise event
            }
        }
    }
}
Class RecognizerPlugin
    Inherits StylusPlugIn
    Private recognizer As GestureRecognizer
    ' StylusPointCollection that contains the stylus points of the current
    ' stroke.
    Private points As StylusPointCollection
    ' Keeps track of the stylus to check whether two styluses are used on the
    ' digitizer.
    Private currentStylus As Integer
    Public Sub New()
        recognizer = New GestureRecognizer()
    End Sub
    ' Collect the points as the user draws the stroke.
    Protected Overrides Sub OnStylusDown(ByVal rawStylusInput As RawStylusInput)
        ' If points is not null, there is already a stroke taking place
        ' on the digitizer, so don't create a new StylusPointsCollection.
        If points Is Nothing Then
            points = New StylusPointCollection(rawStylusInput.GetStylusPoints().Description)
            points.Add(rawStylusInput.GetStylusPoints())
            currentStylus = rawStylusInput.StylusDeviceId
        End If
    End Sub
    ' Collect the points as the user draws the stroke.
    Protected Overrides Sub OnStylusMove(ByVal rawStylusInput As RawStylusInput)
        ' Check whether the stylus that started the stroke is the same, and
        ' that the element hasn't lost focus since the stroke began.
        If Not (points Is Nothing) AndAlso currentStylus = rawStylusInput.StylusDeviceId Then
            points.Add(rawStylusInput.GetStylusPoints())
        End If
    End Sub
    ' Collect the points as the user draws the stroke.
    Protected Overrides Sub OnStylusUp(ByVal rawStylusInput As RawStylusInput)
        ' Check whether the stylus that started the stroke is the same, and
        ' that the element hasn't lost focus since the stroke began.
        If Not (points Is Nothing) AndAlso currentStylus = rawStylusInput.StylusDeviceId Then
            points.Add(rawStylusInput.GetStylusPoints())
            ' Subscribe to the OnStylusUpProcessed method.
            rawStylusInput.NotifyWhenProcessed(points)
        End If
        points = Nothing
        currentStylus = 0
    End Sub
    ' If the element loses focus, stop collecting the points and don't
    ' perform gesture recognition.
    Protected Overrides Sub OnStylusLeave(ByVal rawStylusInput As RawStylusInput, ByVal confirmed As Boolean)
        If confirmed Then
            ' Clear the StylusPointCollection
            points = Nothing
            currentStylus = 0
        End If
    End Sub
    ' This method is called on the application thread.
    Protected Overrides Sub OnStylusUpProcessed(ByVal callbackData As Object, ByVal targetVerified As Boolean)
        ' Check that the element actually receive the OnStylusUp input.
        If targetVerified AndAlso recognizer.IsRecognizerAvailable Then
            Dim strokePoints As StylusPointCollection = callbackData
            If strokePoints Is Nothing Then
                Return
            End If
            ' Create a StrokeCollection to pass to the GestureRecognizer.
            Dim newStroke As New Stroke(strokePoints)
            Dim strokes As New StrokeCollection()
            strokes.Add(newStroke)
            Dim results As ReadOnlyCollection(Of GestureRecognitionResult) = recognizer.Recognize(strokes)
            ' If the GestureRecognizer recognizes the stroke as a Down
            ' gesture with strong confidence, raise an event.
            If results(0).ApplicationGesture = ApplicationGesture.Down AndAlso _
               results(0).RecognitionConfidence = RecognitionConfidence.Strong Then
                'raise event
            End If
        End If
    End Sub
End Class
注解
若要订阅此方法,请调用NotifyWhenProcessed该方法OnStylusMove