/// <summary> /// Function to render the symbol /// </summary> /// <param name="map">The map</param> /// <param name="point">The point to symbolize</param> /// <param name="g">The graphics object</param> protected void RenderPoint(MapViewport map, Coordinate point, Graphics g) { if (point == null) { return; } PointF pp = map.WorldToImage(point); if (Rotation != 0f && !Single.IsNaN(Rotation)) { SizeF offset = GetOffset(); PointF rotationCenter = pp; using (var origTrans = g.Transform.Clone()) using (var t = g.Transform) { t.RotateAt(Rotation, rotationCenter); t.Translate(offset.Width + 1, offset.Height + 1); g.Transform = t; OnRenderInternal(pp, g); g.Transform = origTrans; } using (var symTrans = new Matrix()) { symTrans.RotateAt(Rotation, rotationCenter); symTrans.Translate(offset.Width + 1, offset.Height + 1); var pts = CanvasArea.ToPointArray(); symTrans.TransformPoints(pts); CanvasArea = pts.ToRectangleF(); } } else { pp = PointF.Add(pp, GetOffset()); OnRenderInternal(pp, g); } }