WPF:如何创建可编辑路径

4
我想知道是否有人可以在这个问题上给我指导:
我需要通过在画布上点击几个点来创建路径,并将这些点添加到路径几何图形中。完成路径后,用户可以“滑动”或移动路径的控制顶点(锚点)以调整路径的形状。
我已经想出了如何绘制“套索”样式的路径,但是如何允许用户选择并移动路径中的单个点呢?
2个回答

1

您需要开发一个数据结构来存储点数据,以便可以轻松地查询和操作。 Path 对象本身可能已经足够了,但请考虑将其包装在另一个对象中,以呈现更具领域特定性的接口。

您需要检测 Canvas 中的鼠标事件,并对 Path 中的所有顶点进行命中测试。

命中测试是一个函数,它为您提供与鼠标坐标最近的路径中单个点的引用,或者如果点击距离任何点都太远而无法被视为“命中”,则返回null。您的命中测试函数成为一个低级构造,从中可以构建更有趣的编辑操作。

例如,您可以为路径中的每个点存储一个bool,指示该点是否被选中。当您按下按钮并拖动鼠标时,可以通过偏移先前提到的数据结构中的数据来拖动所有选定的点。


0
我会尝试以下方法:
  1. 在C#中,使用一个ObservableCollection<Point>或者一个PointCollection
  2. 通过数据绑定,从该集合中绘制一个路径,并从集合中获取其几何形状;
  3. 在路径层之上,添加某种ItemsContainer,将ItemsTemplate设置为System.Windows.Controls.Primitives.Thumb(处理拖动的控件),ControlTemplate具有椭圆形状和DataTrigger,根据是否被选中来改变其外观。ItemsSource也将绑定到该集合。
这样做,您可以进行命中测试以突出显示路径上的点,这将切换ItemsContainer的可见性(因此进行命中测试)。
有了这些,您可以直接处理命中测试,使用常规事件如“Drag”、“MouseMove”等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接