This example demonstrates how to create custom line patterns. Here is a screenshot with the results of the code.
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Windows.Forms; using AxMapWinGIS; using MapWinGIS; public partial class MapExamples { // <summary> // Creates and displayes custom line patterns // </summary> public void LinePattern(AxMap axMap1, string iconPath) { Shapefile sf = this.CreateLines(); axMap1.AddLayer(sf, true); Utils utils = new Utils(); // railroad pattern LinePattern pattern = new LinePattern(); pattern.AddLine(utils.ColorByName(tkMapColor.Black), 6.0f, tkDashStyle.dsSolid); pattern.AddLine(utils.ColorByName(tkMapColor.White), 5.0f, tkDashStyle.dsDot); ShapefileCategory ct = sf.Categories.Add("Railroad"); ct.DrawingOptions.LinePattern = pattern; ct.DrawingOptions.UseLinePattern = true; sf.set_ShapeCategory(0, 0); // river pattern pattern = new LinePattern(); pattern.AddLine(utils.ColorByName(tkMapColor.DarkBlue), 6.0f, tkDashStyle.dsSolid); pattern.AddLine(utils.ColorByName(tkMapColor.LightBlue), 4.0f, tkDashStyle.dsSolid); ct = sf.Categories.Add("River"); ct.DrawingOptions.LinePattern = pattern; ct.DrawingOptions.UseLinePattern = true; sf.set_ShapeCategory(1, 1); // road with direction pattern = new LinePattern(); pattern.AddLine(utils.ColorByName(tkMapColor.Gray), 8.0f, tkDashStyle.dsSolid); pattern.AddLine(utils.ColorByName(tkMapColor.Yellow), 7.0f, tkDashStyle.dsSolid); LineSegment segm = pattern.AddMarker(tkDefaultPointSymbol.dpsArrowRight); segm.Color = utils.ColorByName(tkMapColor.Orange); segm.MarkerSize = 10; segm.MarkerInterval = 32; ct = sf.Categories.Add("Direction"); ct.DrawingOptions.LinePattern = pattern; ct.DrawingOptions.UseLinePattern = true; sf.set_ShapeCategory(2, 2); } // <summary> // This function creates a number of parallel polylines (segments) // </summary> private Shapefile CreateLines() { Shapefile sf = new Shapefile(); sf.CreateNew("", ShpfileType.SHP_POLYLINE); int width = 500; int step = 50; for (int i = 0; i < 3; i++) { Shape shp = new Shape(); shp.Create(ShpfileType.SHP_POLYLINE); Point pnt = new Point(); pnt.x = 0; pnt.y = i * step; int index = shp.numPoints; shp.InsertPoint(pnt, ref index); pnt = new Point(); pnt.x = width; pnt.y = i * step; index = shp.numPoints; shp.InsertPoint(pnt, ref index); index = sf.NumShapes; sf.EditInsertShape(shp, ref index); } return sf; } }
1.7.6.1