当前,路由呈现方法使用相同笔画绘制所有内容。您将需要继承Route类,使自己的画法,是这样的:
public class GMapRouteColored : GMap.NET.WindowsForms.GMapRoute
{
public GMapRouteColored(IEnumerable<PointLatLng> points, string name)
: base(points, name)
{
}
public override void OnRender(Graphics g)
{
for(int i = 0; i < LocalPoints.Count - 1; i++)
{
g.DrawLine(yourPenForThisLine, LocalPoints[i].X, LocalPoints[i].Y, LocalPoints[i+1].X, LocalPoints[i+1].Y);
}
}
}
当然你可能还需要一种方法来确定取决于点的一些值要使用的笔。我能处理这个问题的唯一简单方法是添加一个与您拥有的点数相等的整数列表,并使用此列表确定每个局部点索引使用哪支笔。我希望这有帮助。
编辑:我注意到你正在寻找一个WPF的解决方案。我发布的解决方案仅适用于WinForms,但基于我使用控件的经验,WinForms具有覆盖层功能更多,可能更适合您的应用程序。
谢谢:)我做了简单的测试,它是非常好的解决方案。尽管我必须在代码中对WindowsFormsHost中的GMap的WinForms版本进行许多更改,但它似乎是我能做的最好的选择。 – hooboe
不客气。您是否发现使用WPF或WinForms之间的主要性能差异?我还没有机会研究这个。 –
我试图找到文件,但我还没有找到任何比较。 – hooboe