2017-09-23 135 views
1

有没有办法在WPF中获取PathGeometry的实际路径?我已经看了RenderedGeometry,但它似乎并没有提供任何其他比我放在获取PathGeometry的实际路径

例如,这里是我的XAML:

<Path x:Name="right" Canvas.Left="10" Canvas.Top="10" StrokeThickness="3" 
     Stroke="Black" StrokeEndLineCap="Round" StrokeStartLineCap="Round" 
     StrokeLineJoin="Miter" Data="M0,9L4.5,0L9,9 "/>` 

这将产生:
enter image description here

WPF本身提供了任何函数还是有办法在路径数据中获取此形状的跟踪轮廓?

我也试过Petzold的尝试类似于这个here,但它根本不起作用。

+1

我不确定“实际路径”是什么意思。你看到的是你所放入的东西:这三点由线条连接起来,用一支厚度为3单位的笔抚摸,并带有圆形的开始和结束帽。您是否试图获取在渲染层创建的镶嵌细分几何?你在这里看到的不是一个真正的'形状';这是一对抚摸线。 –

+0

@MikeStrobel yes –

+1

谢谢迈克。看看Petzold的例子 - 也只是用一个'LineJoin = Round'的线。在'GetWidenedPathGeometry'中,我可以得到我的'LineJoin = Mitre',所以它几乎是你上面看到的形状,但是没有出现RoundCaps of Round。 –

回答

1

使用GetWidenedPathGeometry和Pen来应用源路径中所有与笔画相关的属性。

var pen = new Pen 
{ 
    Thickness = right.StrokeThickness, 
    StartLineCap = right.StrokeStartLineCap, 
    EndLineCap = right.StrokeEndLineCap, 
    LineJoin = right.StrokeLineJoin, 
    MiterLimit = right.StrokeMiterLimit 
}; 

var geometry = right.Data.GetWidenedPathGeometry(pen); 
+0

哇,太棒了!谁会认为这会很直接。非常感谢! –