实现InkCanvas笔画的命中测试

本文关键字:测试 InkCanvas 笔画 实现 | 更新日期: 2023-09-27 18:12:25

我已经实现了一个自定义InkCanvas和多个自定义笔画,描述如下:自定义渲染墨水

一切都很好,除了我不能对我的笔划做命中测试。在上面链接的"实现自定义笔画"部分,上面写着:

Stroke类也可以执行命中测试。你也可以通过覆盖当前类中的HitTest方法来实现你自己的命中测试算法。

但是我在那里找不到任何可覆盖的HitTest方法!!

谁能帮我实现一个自定义笔画命中测试?

谢谢

实现InkCanvas笔画的命中测试

我找到解决办法了。

    protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
    {
        if (EditingMode == InkCanvasEditingMode.Select)
        {
            var strokes = Strokes.Where(x => (x is CustomStroke) && ((CustomStroke)x).HitTestPoint(e.GetPosition(this))).ToList();
            if (strokes.Any())
                Select(new StrokeCollection(strokes));
        }
        base.OnPreviewMouseDown(e);
    }