Как прикрепить часовую стрелку часов к движению жестов с помощью скипаши - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь перевести часовую стрелку в часы, следуя жесту пальца. Я использую SkiaSharp для этого. Я застрял в прикреплении часовой стрелки к движениям жестов пальцев.

У меня есть метод Touch_Handle ниже, следующая функция получила удар и выполнила все действия, но часы (по крайней мере, сейчас пытаются переместить часы) не двигаются при прикосновении.

Xaml:

<Grid>
                <skia:SKCanvasView 
                    x:Name="canvasView" 
                    EnableTouchEvents="true"
                    Touch="Handle_Touch"
                    PaintSurface="OnCanvasViewPaintSurface" />

    </Grid>

Xaml.cs

private void Handle_Touch(object sender, SKTouchEventArgs args)
        {           

            SKPoint point = args.Location;

            switch (args.ActionType)
            {
                case SKTouchAction.Pressed:
                    if (!inProgressPaths.ContainsKey(args.Id))
                    {
                        SKPath path = new SKPath();
                        path.MoveTo(args.Location);
                        inProgressPaths.Add(args.Id, path);
                        ((SKCanvasView)sender).InvalidateSurface();
                    }
                    break;

                case SKTouchAction.Moved:
                    if (inProgressPaths.ContainsKey(args.Id))
                    {
                        SKPath path = inProgressPaths[args.Id];
                        path.LineTo(args.Location);
                        ((SKCanvasView)sender).InvalidateSurface();
                    }
                    break;

                case SKTouchAction.Released:
                    if (inProgressPaths.ContainsKey(args.Id))
                    {
                        completedPaths.Add(inProgressPaths[args.Id]);
                        inProgressPaths.Remove(args.Id);
                        ((SKCanvasView)sender).InvalidateSurface();
                    }
                    break;

                case SKTouchAction.Cancelled:
                    if (inProgressPaths.ContainsKey(args.Id))
                    {
                        inProgressPaths.Remove(args.Id);
                        ((SKCanvasView)sender).InvalidateSurface();
                    }
                    break;
            }

            // we have handled these events
            args.Handled = true;
        }
...