【问题标题】:WPF InkCanvas Z-Index for strokes用于笔划的 WPF InkCanvas Z-Index
【发布时间】:2018-12-13 14:29:39
【问题描述】:

在 WPF InkCanvas 中,墨迹呈现在顶部,并且笔划没有 z-index 属性。我在 InkCanvas 上有其他 UIElement,例如形状、图像,但无法将 UIElement 置于首位。有没有解决这个问题的方法。我试过了
下面的东西。

1) 使用两种不同的 InkCanvas(一种用于笔划,一种用于 UIElements) - 在此无法实现三明治效果(即笔画之间的 UIElement Something like this in this circle is UIElement 2) 使用几何路径遮罩笔画并添加为 UIElement - 如果我将笔画添加为 UIElements(使用路径),那么我将失去擦除功能。

【问题讨论】:

    标签: wpf inkcanvas


    【解决方案1】:

    作为我们游戏套件一部分的地图编辑器使用墨水来绘制地形,所以我最近有这种事情的经验。

    我的应用程序的工作方式是您选择您正在绘制的东西(树林、道路、轮廓等)并使用墨水绘制笔触。

    然后我处理该笔划并获得几何图形。 我将它传递给 viewmodel > itemssource > itemscontrol。 然后将其模板化为一块地形。 此项目控件位于 inkcanvas 下方。 用户可以通过在 observablecollection 中上下移动它们来操纵它们的 z-index。 我只依赖于定义 z-index 的顺序。

    我还通过序列化来保留每个笔划的数据。

    你在想“擦除怎么样?”。 为此,我将有一个明确的擦除这个东西模式。 让他们选择一个形状并获取它的笔画数据,将笔画添加回 inkcanvas。一旦他们完成擦除,然后使用“保存更改”按钮或其他东西来重新处理笔画并切换回编辑模式。

    由于这是我正在开发的游戏地图编辑器,因此绘图会生成地形的区域和线类型,但它们的区域/线是由从笔划转换而来的几何图形定义的。 ZIndex 对应于左侧面板中对象的顺序。您可以看到带有向上和向下 V 形的按钮移动 a 的顺序

    【讨论】:

    • 感谢您的帮助。但是再次使用您的解决方案无法实现三明治效果(strokes-UIElements-strokes)。我在原始问题中附上了图片供您参考。
    • 可以。我的应用程序中的 itemscontrol 有一个用于它的 itemspanel 的画布。几何图形用于将其模板化为对象。 zindex 由我添加视图模型的顺序定义。首先是红色,然后是黄色,然后是黑色,然后是蓝色。它们会像你的照片一样相互叠加。我还有一种机制可以重新排序视图模型以更改 zindex..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多