我有一个 InkCanvas 在一个窗口,在我允许用户画笔、触摸或者鼠标。我还允许用户添加文字。用户水龙头一个"文本添加"按钮,那么,水龙头在哪里画布上他们希望他们的文本。文本框显的有,允许他们的类型。在进入或失去了重点,我创建了一个 ContentControl 和增加它 myInkCanvas.Children.

我会喜欢的用户能够删除的文字,他们已经创建了当 InkCanvas 是在删除模式(I am使用 EraseByPoint).我已经试图捕捉 MouseEnterPreviewMouseMove 活动的内容的控制,但也似乎火灾。

是否有一个事件,我可以捕捉?是否有更好的办法来处理这种情况?它甚至有可能吗?

有帮助吗?

解决方案

你可以使用打测试用于这个目的
看看 在这里,

得到第一InkPresenter

public T GetVisualChild<T>(Visual parent) where T : Visual
{
    T child = default(T);
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < numVisuals; i++)
    {
        Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
        child = v as T;
        if (child == null)
        {
            child = GetVisualChild<T>(v);
        }
        if (child != null)
            break;
    }
    return child;
}

InkPresenter inkPresenter = GetVisualChild<InkPresenter>(myInkCanvas);

然后得到HitTestResult的您的观点

HitTestResult hitTestResult = VisualTreeHelper.HitTest(inkPresenter, new Point(x, y));

然后你可以用 hitTestResult.VisualHit 除去这个目的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top