首页 > 解决方案 > 用于笔划的 WPF InkCanvas Z-Index

问题描述

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

1) 使用两种不同的 InkCanvas(一种用于笔划,一种用于 UIElements) - 在此无法实现三明治效果(即笔划之间的 UIElement 在这个圆圈中类似这样的东西是 UIElement 2)使用几何路径掩盖笔划并添加为 UIElement - 如果我将笔画添加为 UIElements(使用路径),然后我将失去擦除功能。

标签: wpfinkcanvas

解决方案


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

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

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

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

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

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


推荐阅读