wpf - 用于笔划的 WPF InkCanvas Z-Index
问题描述
在 WPF InkCanvas 中,墨迹呈现在顶部,并且笔划没有 z-index 属性。我在 InkCanvas 上有其他 UIElement,例如形状、图像,但无法将 UIElement 置于首位。有没有解决这个问题的方法。我已经尝试过
以下事情。
1) 使用两种不同的 InkCanvas(一种用于笔划,一种用于 UIElements) - 在此无法实现三明治效果(即笔划之间的 UIElement 在这个圆圈中类似这样的东西是 UIElement 2)使用几何路径掩盖笔划并添加为 UIElement - 如果我将笔画添加为 UIElements(使用路径),然后我将失去擦除功能。
解决方案
作为我们游戏套件的一部分的地图编辑器使用墨水来绘制地形,所以我最近有这种事情的经验。
我的应用程序的工作方式是您选择您正在绘制的东西(树林、道路、轮廓等)并使用墨水绘制笔触。
然后我处理该笔画并获得几何图形。我将它传递给 viewmodel > itemssource > itemscontrol。然后将其模板化为一块地形。此项目控件位于 inkcanvas 下方。用户可以通过在 observablecollection 中上下移动它们来操作它们的 z-index。我只依赖于定义 z-index 的顺序。
我还通过序列化来保留每个笔画的数据。
你在想“擦除怎么样?”。为此,我将有一个明确的擦除这个东西模式。让他们选择一个形状并获取它的笔画数据,将笔画添加回 inkcanvas。一旦他们完成擦除,然后使用“保存更改”按钮或其他东西来重新处理笔画并切换回编辑模式。
由于这是我正在使用的游戏地图编辑器,因此绘图会生成地形的区域和线类型,但它们的区域/线是由从笔划转换而来的几何图形定义的。ZIndex 对应于左侧面板中对象的顺序。您可以看到带有向上和向下 V 形的按钮移动 a 的顺序
推荐阅读
- javascript - 提交前更改表单属性
- java - @OneToMany 关系不会将父项的主键保存在子表中
- angular - ngx-quill 无法显示下拉标签
- c# - 如何过滤列表
如果它包含特定的类数据? - javascript - 如何在 java ArrayList 中实现 JavaScript Array shift()
- c# - Postsharp 6.0.28、.NET 4.7.1 和编译时出现的奇怪警告
- powershell - 需要从远程的 PowerShell 脚本执行 winrm set winrm/config/client '@{TrustedHosts="192.168.4.231"}' 命令
- selenium - 自动化 Instagram 的最有效方法是什么?
- c# - 具有相同名称的多个单选按钮需要架构
- php - 当我从 php 写入时,csv 文件中的德语变音符号出现问题