在WPF InkCanvas中,墨水显示在顶部,并且笔划没有z-index属性。我还有其他UIElement,例如形状,InkCanvas上的图像,并且无法将UIElement置于顶部。有没有解决此问题的方法。我试过了
下面的东西。
1)使用两种不同的InkCanvas(一种用于笔划,一种用于UIElements) -无法达到三明治效果(即笔触之间的UIElement Something like this in this circle is UIElement 2)使用几何路径遮盖笔触并添加为UIElement -如果我将笔触添加为UIElements(使用路径),那么我将失去擦除功能。
答案 0 :(得分:0)
我们游戏套件中的地图编辑器使用墨水绘制地形,所以我最近对这种事情有经验。
我的应用程序的工作方式是您选择要绘制的东西(树林,道路,轮廓线等)并使用墨水绘制笔触。
然后我处理该笔触并获得几何形状。 我将其传递给viewmodel> itemssource> itemscontrol。 然后将其模板化为一块地形。 此项目控件在画布下方。 用户可以通过在可观察的集合中上下移动它们的z索引来操纵它们。 我只依赖于定义z-index的顺序。
我还通过序列化保留了每个笔画的数据。
您正在考虑“如何擦除?”。 要做到这一点,我将有一个明确的“擦除此物”模式。 让他们选择一个形状并获取其笔划数据,然后将笔划添加回墨水画布。一旦完成擦除,请使用“保存更改”按钮或其他方法重新处理笔划,然后切换回编辑模式。
由于这是我正在使用的游戏地图编辑器,因此绘图会生成地形的区域和线型,但是它们的区域/线是由笔划转换的几何形状定义的。 ZIndex对应于左侧面板中对象的顺序。可以看到人字形指向上方和下方的按钮可移动