This example demonstrates how to manually select shapes and to show information about the their relative area. The shapes area selected by mouse dragging. Chart is update automatically. Here is a screenshot with the results of the code.
using System; using System.Windows.Forms; using AxMapWinGIS; using MapWinGIS; using System.IO; public partial class MapExamples { // <summary> // Adds the layers and register event handler. // </summary> public void SelectBox(AxMap axMap1, string dataPath) { string filename = dataPath + "landuse.shp"; if (!File.Exists(filename)) { MessageBox.Show("Couldn't file the file: " + filename); return; } Shapefile sf = new Shapefile(); sf.Open(filename, null); if (!sf.StartEditingShapes(true, null)) { MessageBox.Show("Failed to start edit mode: " + sf.Table.get_ErrorMsg(sf.LastErrorCode)); } else { sf.UseQTree = true; sf.Labels.Generate("[Name]", tkLabelPositioning.lpCentroid, false); axMap1.AddLayer(sf, true); axMap1.SendSelectBoxFinal = true; MapEvents.SelectBoxFinal += new AxMapWinGIS._DMapEvents_SelectBoxFinalEventHandler(axMap1_SelectBoxFinal); // change MapEvents to axMap1 axMap1.MapUnits = tkUnitsOfMeasure.umMeters; axMap1.CurrentScale = 50000; axMap1.CursorMode = tkCursorMode.cmSelection; } } // <summary> // Performs selection, updates charts // </summary> void axMap1_SelectBoxFinal(object sender, _DMapEvents_SelectBoxFinalEvent e) { // it's assumed here that the layer we want to edit is the first 1 (with 0 index) int layerHandle = axMap1.get_LayerHandle(0); Shapefile sf = axMap1.get_Shapefile(layerHandle); if (sf != null) { double left = 0.0; double top = 0.0; double bottom = 0.0; double right = 0.0; axMap1.PixelToProj(e.left, e.top, ref left, ref top); axMap1.PixelToProj(e.right, e.bottom, ref right, ref bottom); object result = null; Extents ext = new Extents(); ext.SetBounds(left, bottom, 0.0, right, top, 0.0); sf.SelectNone(); if (sf.SelectShapes(ext, 0.0, SelectMode.INTERSECTION, ref result)) { int[] shapes = result as int[]; for (int i = 0; i < shapes.Length; i++) { sf.set_ShapeSelected(shapes[i], true); } } axMap1.Redraw(); } } }
1.7.6.1