/// <summary> /// Method to place the street direction symbols /// </summary> /// <param name="map"></param> /// <param name="lineString"></param> /// <param name="graphics"></param> private void OnRenderInternal(SharpMap.MapViewport map, GeoAPI.Geometries.ILineString lineString, System.Drawing.Graphics graphics) { var length = lineString.Length; var lil = new NetTopologySuite.LinearReferencing.LengthIndexedLine(lineString); if (length < RepeatInterval + ArrowLength) { var start = System.Math.Max(0, (length - ArrowLength) / 2); var end = System.Math.Min(length, (length + ArrowLength) / 2); var arrow = (GeoAPI.Geometries.ILineString)lil.ExtractLine(start, end); RenderArrow(map, graphics, arrow); return; } var numArrows = (int)((lineString.Length - ArrowLength) / RepeatInterval); var offset = (lineString.Length - numArrows * RepeatInterval - ArrowLength) * 0.5; while (offset + ArrowLength < lineString.Length) { var arrow = (GeoAPI.Geometries.ILineString)lil.ExtractLine(offset, offset + ArrowLength); RenderArrow(map, graphics, arrow); offset += RepeatInterval; } }
protected override void OnRenderInternal(SharpMap.MapViewport map, GeoAPI.Geometries.IPolygon polygon, System.Drawing.Graphics g) { var pt = polygon.Centroid; g.RenderingOrigin = System.Drawing.Point.Truncate(map.WorldToImage(pt.Coordinate)); base.OnRenderInternal(map, polygon, g); }
public override void Begin(System.Drawing.Graphics g, SharpMap.MapViewport map, int aproximateNumberOfGeometries) { base.Begin(g, map, aproximateNumberOfGeometries); //Adjust Arrow cap var size = (float)(ArrowLength / 5 / map.PixelWidth); ArrowPen.CustomEndCap = new System.Drawing.Drawing2D.AdjustableArrowCap(size, size); }
/// <summary> /// Method to render the arrow /// </summary> /// <param name="map">The map</param> /// <param name="graphics">The graphics object</param> /// <param name="arrow">The arrow</param> private void RenderArrow(SharpMap.MapViewport map, System.Drawing.Graphics graphics, GeoAPI.Geometries.ILineString arrow) { var pts = new System.Drawing.PointF[arrow.Coordinates.Length]; for (var i = 0; i < pts.Length; i++) { pts[i] = map.WorldToImage(arrow.GetCoordinateN(i)); } graphics.DrawLines(ArrowPen, pts); }
public void Render(SharpMap.MapViewport map, GeoAPI.Geometries.ILineal geometry, System.Drawing.Graphics graphics) { if (geometry is GeoAPI.Geometries.IMultiLineString) { var mls = (GeoAPI.Geometries.IMultiLineString)geometry; for (var i = 0; i < mls.Count; i++) { OnRenderInternal(map, (GeoAPI.Geometries.ILineString)mls.GetGeometryN(i), graphics); } return; } OnRenderInternal(map, (GeoAPI.Geometries.ILineString)geometry, graphics); }
public override void Begin(System.Drawing.Graphics g, SharpMap.MapViewport map, int aproximateNumberOfGeometries) { base.Begin(g, map, aproximateNumberOfGeometries); _oldRenderOrigin = g.RenderingOrigin; }
public override void End(System.Drawing.Graphics g, SharpMap.MapViewport map) { g.RenderingOrigin = _oldRenderOrigin; }