Reuse polyline PathFigureCollection

This commit is contained in:
ClemensFischer 2023-12-13 14:55:49 +01:00
parent 6b386827ff
commit 71f17420b5
6 changed files with 15 additions and 17 deletions

View file

@ -139,35 +139,27 @@ namespace MapControl
return longitudeOffset;
}
protected PathFigureCollection GetPolylineFigures(IEnumerable<Location> locations, bool closed)
protected void AddPolylinePoints(PathFigureCollection pathFigures, IEnumerable<Location> locations, bool closed)
{
var pathFigures = new PathFigureCollection();
if (parentMap != null && locations != null)
{
var longitudeOffset = GetLongitudeOffset(Location ?? locations.FirstOrDefault());
AddPolylineLocations(pathFigures, locations, longitudeOffset, closed);
AddPolylinePoints(pathFigures, locations, longitudeOffset, closed);
}
return pathFigures;
}
protected PathFigureCollection GetMultiPolygonFigures(IEnumerable<IEnumerable<Location>> polygons)
protected void AddMultiPolygonPoints(PathFigureCollection pathFigures, IEnumerable<IEnumerable<Location>> polygons)
{
var pathFigures = new PathFigureCollection();
if (parentMap != null && polygons != null)
{
var longitudeOffset = GetLongitudeOffset(Location);
foreach (var polygon in polygons)
{
AddPolylineLocations(pathFigures, polygon, longitudeOffset, true);
AddPolylinePoints(pathFigures, polygon, longitudeOffset, true);
}
}
return pathFigures;
}
#endregion

View file

@ -54,7 +54,9 @@ namespace MapControl
protected override void UpdateData()
{
((PathGeometry)Data).Figures = GetPolylineFigures(Locations, true);
var figures = ((PathGeometry)Data).Figures;
figures.Clear();
AddPolylinePoints(figures, Locations, true);
}
}
}

View file

@ -54,7 +54,9 @@ namespace MapControl
protected override void UpdateData()
{
((PathGeometry)Data).Figures = GetPolylineFigures(Locations, false);
var figures = ((PathGeometry)Data).Figures;
figures.Clear();
AddPolylinePoints(figures, Locations, false);
}
}
}

View file

@ -48,7 +48,9 @@ namespace MapControl
protected override void UpdateData()
{
((PathGeometry)Data).Figures = GetMultiPolygonFigures(Polygons);
var figures = ((PathGeometry)Data).Figures;
figures.Clear();
AddMultiPolygonPoints(figures, Polygons);
}
}
}

View file

@ -86,7 +86,7 @@ namespace MapControl
return true;
}
protected void AddPolylineLocations(PathFigureCollection pathFigures, IEnumerable<Location> locations, double longitudeOffset, bool closed)
protected void AddPolylinePoints(PathFigureCollection pathFigures, IEnumerable<Location> locations, double longitudeOffset, bool closed)
{
if (locations.Count() >= 2)
{

View file

@ -60,7 +60,7 @@ namespace MapControl
UpdateData();
}
protected void AddPolylineLocations(PathFigureCollection pathFigures, IEnumerable<Location> locations, double longitudeOffset, bool closed)
protected void AddPolylinePoints(PathFigureCollection pathFigures, IEnumerable<Location> locations, double longitudeOffset, bool closed)
{
if (locations.Count() >= 2)
{