/// <summary> /// Returns the style based on a feature /// </summary> /// <param name="attribute">Set of attribute values to calculate the <see cref="SharpMap.Styles.IStyle"/> from</param> /// <returns>The style</returns> public IStyle GetStyle(IFeature attribute) { VectorStyle res = _style; CachedLineSymbolizer cls = new CachedLineSymbolizer(); cls.LineSymbolizeHandlers.Add(new PlainLineSymbolizeHandler { Line = new Pen(Color.Gold, 2) }); WarpedLineSymbolizeHander wls = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer. GetGreaterSeries(3, 3), Line = new Pen(Color.Firebrick, 1) , Interval = 20 }; cls.LineSymbolizeHandlers.Add(wls); cls.ImmediateMode = true; res.LineSymbolizer = cls; return(res); }
public void TestWarpedLineSymbolizer() { ShapeFile p = new ShapeFile(@"d:\\daten\GeoFabrik\\Aurich\\roads.shp", false); VectorLayer l = new VectorLayer("roads", p); CachedLineSymbolizer cls = new CachedLineSymbolizer(); cls.LineSymbolizeHandlers.Add(new PlainLineSymbolizeHandler { Line = new Pen(Color.Gold, 2) }); WarpedLineSymbolizeHander wls = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer. GetGreaterSeries(3, 3), Line = new Pen(Color.Firebrick, 1) , Interval = 20 }; cls.LineSymbolizeHandlers.Add(wls); l.Style.LineSymbolizer = cls; Map m = new Map(new Size(720, 540)) { BackColor = Color.Cornsilk }; m.Layers.Add(l); m.ZoomToExtents(); Stopwatch sw = new Stopwatch(); sw.Start(); Image bmp = m.GetMap(); sw.Stop(); Console.WriteLine(string.Format("Rendering new method: {0}ms", sw.ElapsedMilliseconds)); bmp.Save("AurichRoads1.bmp"); cls.LineSymbolizeHandlers[1] = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer. GetTriangle(4, 0), Line = new Pen(Color.Firebrick, 1), Fill = new SolidBrush(Color.Firebrick) , Interval = 10 }; sw.Reset(); sw.Start(); bmp = m.GetMap(); sw.Stop(); Console.WriteLine(string.Format("Rendering new method: {0}ms", sw.ElapsedMilliseconds)); bmp.Save("AurichRoads2-0.bmp"); cls.LineSymbolizeHandlers[1] = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer. GetTriangle(4, 1), Line = new Pen(Color.Firebrick, 1), Fill = new SolidBrush(Color.Firebrick) , Interval = 10 }; sw.Reset(); sw.Start(); bmp = m.GetMap(); sw.Stop(); Console.WriteLine(string.Format("Rendering new method: {0}ms", sw.ElapsedMilliseconds)); bmp.Save("AurichRoads2-1.bmp"); cls.LineSymbolizeHandlers[1] = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer. GetTriangle(4, 2), Line = new Pen(Color.Firebrick, 1), Fill = new SolidBrush(Color.Firebrick) , Interval = 10 }; sw.Reset(); sw.Start(); bmp = m.GetMap(); sw.Stop(); Console.WriteLine(string.Format("Rendering new method: {0}ms", sw.ElapsedMilliseconds)); bmp.Save("AurichRoads2-2.bmp"); cls.LineSymbolizeHandlers[1] = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer. GetTriangle(4, 3), Line = new Pen(Color.Firebrick, 1), Fill = new SolidBrush(Color.Firebrick) , Interval = 10 }; sw.Reset(); sw.Start(); bmp = m.GetMap(); sw.Stop(); Console.WriteLine(string.Format("Rendering new method: {0}ms", sw.ElapsedMilliseconds)); bmp.Save("AurichRoads2-3.bmp"); //cls.LineSymbolizeHandlers[0] = cls.LineSymbolizeHandlers[1]; cls.LineSymbolizeHandlers[1] = new WarpedLineSymbolizeHander { Pattern = WarpedLineSymbolizer.GetZigZag(4, 4), Line = new Pen(Color.Firebrick, 1), //Fill = new System.Drawing.SolidBrush(System.Drawing.Color.Firebrick) }; sw.Reset(); sw.Start(); bmp = m.GetMap(); sw.Stop(); Console.WriteLine(string.Format("Rendering new method: {0}ms", sw.ElapsedMilliseconds)); bmp.Save("AurichRoads3.bmp"); }