在WPF中,有一种方法可以修改从Dash-Dot
序列中绘制APART的路径的方式吗?假设我想为我正在绘制的任何路径或绘制路径本身上的小三角形,波形等绘制三条线。我尝试过刷子,但它不会跟随Path
。请帮忙
THX
答案 0 :(得分:3)
WPF的Geometry
类具有您轻松完成此操作所需的所有原语,但您需要在代码中执行此操作。当我需要进行自定义行时,我通常会根据Drawing
构建一个Geometry
,但在您的情况下,您可以简单地构建一个并行三行的Geometry
并对其进行描述。< / p>
PathGeometry.CreateFromGeometry()
开始,获取输入路径PathGeometry
GetWidenedPathGeometry()
,传入所需的间距,以获得边缘与边线对应的新几何体CombinedGeometry
关于步骤3的更多说明:加宽的几何体在原始线的末尾具有线段。这会导致在线的末端绘制一条线,这在许多情况下实际上看起来很美观。如果没有它你的情况看起来会更好,可以通过迭代侧线几何体并删除通过原始路径端点的所有线段来移除它。
如果你没有取消结果,上面的代码大约需要8行代码,如果你这样做则需要15行代码。
使这方便的一个技巧是创建一个附加属性,它有效地强制它所附加的Data
控件的Path
属性。有了这样的附属物,你需要写的只有:
<Path TripleStroke.Enable="true" Data="..." />
如果你知道如何实现附加属性并在其中注册处理程序,这是一块蛋糕。如果没有,请计划在实施附加属性方法之前花几个小时学习如何编写附加属性以模拟价值强制。
<强>更新强>
我上面描述的基本技术也可以扩展到允许沿路径应用任意模式。有关示例,请参阅Expression Design工具中的自定义画笔。但是,WPF没有内置任何东西为你做这件事,所以你需要自己创建它,我可以从经验告诉你这是很多工作。以下是基本步骤:
首先创建一个方法,该方法会将Geometry
一个现有的Drawing
和一些参数设置为端盖等,并创建一个重复给定Drawing
的新Drawing
Geometry
给出的路径。然后很容易绘制描边路径:创建一个Drawing
来描述自定义描边,然后使用包含DrawingVisual
Binding
的{{1}}显示描边,并使用转换器调用转换方法
要实际实现转换方法:
GeometryDrawing
个对象(我也支持ImageDrawing
但由于您需要使用3D系统来拉伸图像,因此更复杂)。这是通过递归DrawingGroup
个对象,随时跟踪变换,以及使用适当的变换构造GeometryDrawings来完成的。GeometryDrawing
个对象,并将适当的坐标转换应用于几何体中的所有坐标。另请注意,在步骤1中,使用GlyphRunDrawings
处理任何FormattedText.BuildGeometry
以创建等效的GeometryDrawing
。
答案 1 :(得分:0)
在WPF中没有支持的方法。解决方案将涉及复合Path对象或花哨的代码隐藏体操。您是否正在寻找三线路径实施?