不是分手了道路,这听起来像你可以简单地使用线性渐变画笔的路径的笔触颜色来完成你的路径衰减相同的效果。例如,尝试在您的路径上设置下面的画笔。
在XAML:
<Path.Stroke>
<LinearGradientBrush>
<GradientStop Color="#00000000" Offset="0.0"/>
<GradientStop Color="#FF000000" Offset="1.0"/>
</LinearGradientBrush>
</Path.Stroke>
在C#:
var brush = new LinearGradientBrush();
brush.GradientStops.Add(new GradientStop(new Color { A = 0, R = 0, B = 0, G = 0 }, 0.0));
brush.GradientStops.Add(new GradientStop(new Color { A = 255, R = 0, B = 0, G = 0 }, 1.0));
this._path.Stroke = brush;
此外,为了解决原来的问题,上面的是否是你在找什么,你有几个选项来分割路径。由于您知道Data是由PathFigures组成的PathGeometry,因此您可以通过编程方式访问这些段并创建更多的Path对象。对于布局,因为每个路径本身是一个新的UIElement的父具有测量,并安排它,你需要把所有的新路径到版式面板,将让他们在相同的相对位置。
我认为有几种方法可以解决这个问题,但将它们完全放在一起的一种方法是简单地将它们放置在Canvas.Top和Canvas.Left(或.Right,.Bottom这取决于你如何铺设出来)设置为路径中的每个段开始的相对偏移,并调整点,使它们相对于新路径的新的左上角。例如,这
<Path Stroke="Black">
<Path.Data>
<PathGeometry>
<PathFigure>
<LineSegment Point="10,10"/>
<LineSegment Point="20,60"/>
<LineSegment Point="70,60"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
能成为像
<Path Stroke="Black">
<Path.Data>
<PathGeometry>
<PathFigure>
<LineSegment Point="10,10"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Black" Canvas.Top="10" Canvas.Left="10">
<Path.Data>
<PathGeometry>
<PathFigure>
<LineSegment Point="10,50"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Black" Canvas.Top="60" Canvas.Left="20">
<Path.Data>
<PathGeometry>
<PathFigure>
<LineSegment Point="50,0"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
应该清楚,你怎么可能通过构建几个路径的给定从C#中的PathGeometry对象以及做到这一点,因为它听起来像你可能不要在你的问题中在XAML中做这件事。让我知道如果它不是,我可以详细说明。
我同意克里斯的回答以上。如果可以的话,该博客上的GradientPath绝对是更好的选择。 – timmyl 2011-02-04 03:36:55
感谢所有这些信息。线性渐变画笔不起作用,因为它基于路径的边界框应用渐变,如该渐变路径链接中所示。我会试用GradientPath,看看它是如何工作的。否则,我会更加关注你对路径分割的看法。 – Dalal 2011-02-05 00:05:46