public Legend(Map map, ILegendFactory factory = null, ILegendSettings settings = null) { _map = map; _factory = factory ?? new LegendFactory(); _settings = settings ?? new LegendSettings(); //Regenerate(); }
private static Image CreateSymbolizerImage(ILegendFactory factory, ISymbolizer symbolizer) { var lif = factory[symbolizer]; if (lif != null) { var item = lif.Create(null, symbolizer); return(item.Symbol); } return(null); }
private static Image CreatePolygonSymbol(ILegendFactory factory, Size symbolSize, VectorStyle vs) { var res = new Bitmap(symbolSize.Width, symbolSize.Height); using (var g = Graphics.FromImage(res)) { g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; if (vs.PolygonSymbolizer == null) { var rect = new Rectangle(3, 3, symbolSize.Width - 6, symbolSize.Height - 6); g.FillRectangle(vs.Fill, rect); g.DrawRectangle(vs.Outline, rect); } else { return(CreateSymbolizerImage(factory, vs.PolygonSymbolizer)); } } return(res); }
private static Image CreateLineSymbol(ILegendFactory legend, Size symbolSize, VectorStyle vs) { var res = new Bitmap(symbolSize.Width, symbolSize.Height); using (var g = Graphics.FromImage(res)) { g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; if (vs.LineSymbolizer == null) { var pts = new[] { new Point(2, symbolSize.Height - 4), new Point(symbolSize.Width / 3, symbolSize.Height / 2), new Point(symbolSize.Width / 2, symbolSize.Height / 2 + 1), new Point(symbolSize.Width - 4, 2) }; if (vs.EnableOutline) { g.DrawLines(vs.Outline, pts); } g.DrawLines(vs.Line, pts); } else { return(CreateSymbolizerImage(legend, vs.LineSymbolizer)); } } return(res); }
private static Image CreatePointSymbol(ILegendFactory legend, Size symbolSize, VectorStyle vs) { var res = new System.Drawing.Bitmap(symbolSize.Width, symbolSize.Height); using (var g = Graphics.FromImage(res)) { g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; if (vs.Symbol != null) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; g.DrawImage(vs.Symbol, new Rectangle(2, 2, symbolSize.Width - 4, symbolSize.Height - 4), new Rectangle(0, 0, vs.Symbol.Width, vs.Symbol.Height), GraphicsUnit.Pixel); } else if (vs.PointColor != null && vs.PointColor != Brushes.Transparent) { g.FillEllipse(vs.PointColor, new RectangleF(2, 2, symbolSize.Width - 4, symbolSize.Height - 4)); } else { return(CreateSymbolizerImage(legend, vs.PointSymbolizer)); } } return(res); }
protected virtual ILegendItem CreatePolygonalStyleLegendItem(ILegendFactory factory, ILegendSettings settings, VectorStyle vs) { return(new LegendItem { Symbol = CreatePolygonSymbol(factory, settings.SymbolSize, vs) }); }