如何手动将事件提交到WPF中的InkCanvas?

时间:2011-09-11 12:18:53

标签: wpf inkcanvas

我如何手动提交事件以供InkCanvas接收?

我需要做的是将InkCanvas的模式设置为墨水模式,然后将虚拟事件发送到InkCanvas,以便我获得绘图行为,就像用户使用真正的鼠标一样。

由于

2 个答案:

答案 0 :(得分:0)

以下代码段显示了在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);            

画布的类型为 InkCanvas 。以上在画布中生成一个三角形。


“是的,如果有帮助,你可以接受答案。”

答案 1 :(得分:0)

这样的东西?

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