Как вручную отправлять события в InkCanvas в WPF? - PullRequest
0 голосов
/ 11 сентября 2011

Как я смогу отправлять события, которые будут получены InkCanvas вручную?

Что мне нужно сделать, это установить режим InkCanvas в режим рукописного ввода, а затем отправить виртуальные события в InkCanvas, чтобычто я получаю поведение при рисовании, как если бы пользователь использовал настоящую мышь.

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 октября 2011

Как то так?

    private void inkSurface_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        inkSurface.CaptureMouse();

        _inkStroke = new Stroke(
            e.StylusDevice.GetStylusPoints(inkSurface));
        _inkStroke.DrawingAttributes.Width = 5;
        _inkStroke.DrawingAttributes.Height = 5;
        _inkStroke.DrawingAttributes.Color = Colors.Black;

        inkSurface.Strokes.Add(_inkStroke);
        e.Handled = true;
    }

    private void inkSurface_MouseMove(object sender, MouseEventArgs e)
    {
        if (_inkStroke != null)
        {
            _inkStroke.StylusPoints.Add(
                e.StylusDevice.GetStylusPoints(inkSurface));
        }
        e.Handled = true;
    }

    private void inkSurface_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        inkSurface.ReleaseMouseCapture();
        e.Handled = true;
    }
0 голосов
/ 11 сентября 2011

Следующий фрагмент кода показывает пример рисования фигуры в InkCanvas:

StylusPointCollection stroke1Points = new StylusPointCollection();
stroke1Points.Add(new StylusPoint(50,10));
stroke1Points.Add(new StylusPoint(90,50));
stroke1Points.Add(new StylusPoint(10,50));
stroke1Points.Add(new StylusPoint(50,10));

Stroke stroke1 = new Stroke(stroke1Points);

canvas.Strokes.Add(stroke1);            

Где canvas имеет тип InkCanvas . Вышеизложенное создает треугольник на холсте.


«И да, вы можете принять ответ, если он вам поможет».

...