不是分手了道路,這聽起來像你可以簡單地使用線性漸變畫筆的路徑的筆觸顏色來完成你的路徑衰減相同的效果。例如,嘗試在您的路徑上設置下面的畫筆。
在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