/// <summary> /// 画多边形按下esc取消 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void mapControl_OnKeyDown(object sender, IMapControlEvents2_OnKeyDownEvent e) { if (e.keyCode == 27) { if (!isFinish) { layer.RemoveElement(polygonElement); listMapPoints.Clear(); isFinish = true; } else { ReleaseCommond(); } } if (e.keyCode == 17)//空格 { isControl = true; ICommand command = new ControlsMapPanToolClass(); command.OnCreate(mapControl.Object); if (command.Enabled) { mapControl.CurrentTool = command as ITool; } } }
private void Sites_FormClosed(object sender, FormClosedEventArgs e) { ESRI.ArcGIS.SystemUI.ICommand Pan = new ControlsMapPanToolClass(); Pan.OnCreate(mMapControl.Object); Pan.OnClick(); mMapControl.CurrentTool = (ITool)Pan; }
public static void PanTool() { ICommand pCommand = new ControlsMapPanToolClass(); pCommand.OnCreate(m_pMapC2); m_pMapC2.CurrentTool = pCommand as ITool; }
/// <summary> /// 按下esc取消测量 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mapControl_OnKeyDown(object sender, IMapControlEvents2_OnKeyDownEvent e) { if (e.keyCode == 27) { if (!isFinish) { if (lineElement != null && textElement != null) { (layer as CompositeGraphicsLayerClass).DeleteElement(textElement); (layer as CompositeGraphicsLayerClass).DeleteElement(lineElement); mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewAll, null, null); } isFinish = true; isMouseDown = false; } else { ReleaseCommond(); } } else if (e.keyCode == 17) { isControl = true; ICommand command = new ControlsMapPanToolClass(); command.OnCreate(mapControl.Object); if (command.Enabled) { mapControl.CurrentTool = command as ITool; } } }
private void barCheckItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { ControlsMapPanToolClass tool = new ControlsMapPanToolClass(); tool.OnCreate(this.MapControl.Object); MapControl.CurrentTool = tool; }
/// <summary> /// 键盘按下 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mapControl_OnKeyDown(object sender, IMapControlEvents2_OnKeyDownEvent e) { if (e.keyCode == 27) { if (!isFinish) { layer.RemoveElement(circleElement); isMouseDown = false; isFinish = true; } else { ReleaseCommond(); } } else if (e.keyCode == 17) { isControl = true; ICommand command = new ControlsMapPanToolClass(); command.OnCreate(mapControl.Object); if (command.Enabled) { mapControl.CurrentTool = command as ITool; } } }
/// <summary> /// 键盘按下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void mapControl_OnKeyDown(object sender, IMapControlEvents2_OnKeyDownEvent e) { if (e.keyCode == 27) { if (measureLine != null) { layer.RemoveElement(measureLine); } toltalLength = 0; segmentLength = 0; if (measurePolygon != null) { layer.RemoveElement(measurePolygon); } if (isFinish) { ReleaseCommond(); } else { ResultEventArgs(" "); isFinish = true; } } if (e.keyCode == 17)//空格 { isControl = true; ICommand command = new ControlsMapPanToolClass(); command.OnCreate(mapControl.Object); if (command.Enabled) { mapControl.CurrentTool = command as ITool; } } }
private void MapPan() { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = pTool; }
private void buttonItem15_Click(object sender, EventArgs e) { ICommand Pan = new ControlsMapPanToolClass(); Pan.OnCreate(axMapControl2.Object); Pan.OnClick(); axMapControl2.CurrentTool = (ITool)Pan; }
private void barButtonItem102_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; switch (this.xtraTabControl1.SelectedTabPageIndex) { case 0: pCommand.OnCreate(this.mainMapControl.Object); this.mainMapControl.CurrentTool = pTool; break; case 1: pCommand.OnCreate(this.axPageLayoutControl.Object); this.axPageLayoutControl.CurrentTool = pTool; break; } }
private void buttonItem7_Click(object sender, EventArgs e) { //设置为移动Icommand,PAN: m_sketchshape = "pan"; m_NewPolygonFeedback = null; ESRI.ArcGIS.SystemUI.ICommand panCommand = new ControlsMapPanToolClass(); panCommand.OnCreate(m_MapCtrls.Object); m_MapCtrls.CurrentTool = panCommand as ITool; }
/// <summary> /// 终止命令 /// </summary> public void ReleaseCommond() { ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(mapControl.Object); mapControl.CurrentTool = tool as ITool; LogoutEvent(); measureTool.Dispose(); }
/// <summary> /// 漫游 /// </summary> public void Roam(bool isDrag = true) { ICommand command = new ControlsMapPanToolClass(); command.OnCreate(mapControl.Object); if (command.Enabled) { mapControl.CurrentTool = command as ITool; } }
/// <summary> /// 终止命令 /// </summary> public void ReleaseCommond() { if (mapControl != null) { LogoutEvent(); ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(mapControl.Object); mapControl.CurrentTool = tool as ITool; } }
private void PanToolbtn_Click(object sender, EventArgs e) { //PanTool tool = new PanTool(); //tool.OnCreate(this.axMapcontrol.GetOcx()); //this.axMapcontrol.CurrentTool = tool as ITool; ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(this.axMapcontrol.GetOcx()); this.axMapcontrol.CurrentTool = tool as ITool; }
private void toolStripButton4_Click(object sender, EventArgs e) { bCreateOrNot = false; axMapControl1.CurrentTool = null; ICommand command = new ControlsMapPanToolClass(); command.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = (ITool)command; this.tsbStartCreate.Enabled = true; }
//窗口关闭时引发委托事件 private void FrmMeasureResult_FormClosed(object sender, FormClosedEventArgs e) { if (frmClosed != null) { frmClosed(); } ESRI.ArcGIS.SystemUI.ICommand Pan = new ControlsMapPanToolClass(); Pan.OnCreate(mMapControl.Object); Pan.OnClick(); mMapControl.CurrentTool = (ITool)Pan; }
public override void OnClick() { ILayer layer = (ILayer)m_mapControl.CustomProperty; //m_mapControl.Extent = layer.AreaOfInterest; ICommand pCommand; pCommand = new ControlsMapPanToolClass(); pCommand.OnCreate(m_mapControl.Object); m_mapControl.CurrentTool = (ITool)pCommand; }
//平移 public static void Pan(ESRI.ArcGIS.Controls.AxMapControl axMapControl) { if (axMapControl == null) { return; } ICommand pCommand; pCommand = new ControlsMapPanToolClass(); pCommand.OnCreate(axMapControl.Object); axMapControl.CurrentTool = (ITool)pCommand; }
private void MainForm_Load(object sender, EventArgs e) { this.TOCControl.SetBuddyControl(this.MapControl); this.MapControl.LoadMxFile(@"D:\20210203\IMG\666.mxd"); this.MapControl.Extent = this.MapControl.FullExtent; ICommand mICommand = new ControlsMapPanToolClass(); mICommand.OnCreate(this.MapControl.Object); this.MapControl.CurrentTool = mICommand as ITool; this.mIGraphicsContainer = this.MapControl.Map as IGraphicsContainer; this.mIFeatureLayer = this.MapControl.GetILayer("Rectangle") as IFeatureLayer; }
/// <summary> /// 释放工具命令 /// </summary> public void ReleaseCommond() { if (mapControl != null) { ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(mapControl.Object); mapControl.CurrentTool = tool as ITool; mapControl.OnMouseDown -= mapControl_OnMouseDown; textCtrl = null; mapControl.OnKeyDown -= mapControl_OnKeyDown; } }
private void ClickQuery_FormClosed(object sender, FormClosedEventArgs e) { mMapControl.Map.ClearSelection(); IGraphicsContainer pGrap = mMapControl.ActiveView as IGraphicsContainer; pGrap.DeleteAllElements(); //删除所添加的图片要素 mMapControl.ActiveView.Refresh(); //刷新图层 mMapControl.CurrentTool = null; //Pan功能 ESRI.ArcGIS.SystemUI.ICommand Pan = new ControlsMapPanToolClass(); Pan.OnCreate(mMapControl.Object); Pan.OnClick(); mMapControl.CurrentTool = (ITool)Pan; }
/// <summary> /// 取消操作 /// </summary> public void ReleaseCommond() { ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(mapControl.Object); mapControl.CurrentTool = tool as ESRI.ArcGIS.SystemUI.ITool; LogoutEvent(); if (layer != null) { mapControl.Map.DeleteLayer(layer); } mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); }
/// <summary> /// 终止命令 /// </summary> public void ReleaseCommond() { foreach (var item in markerList) { item.Dispose(); } markerList.Clear(); mapControl.Map.DeleteLayer(layer); LogoutEvent(); ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(mapControl.Object); mapControl.CurrentTool = tool as ESRI.ArcGIS.SystemUI.ITool; }
/// <summary> /// 键盘按下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void mapControl_OnKeyDown(object sender, IMapControlEvents2_OnKeyDownEvent e) { if (e.keyCode == 27) { ReleaseCommond(); } if (e.keyCode == 17)//空格 { isControl = true; ICommand command = new ControlsMapPanToolClass(); command.OnCreate(mapControl.Object); if (command.Enabled) { mapControl.CurrentTool = command as ITool; } } }
/// <summary> /// 漫游工具 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PantooltoolStripButton4_Click(object sender, EventArgs e) { //当选中为数据视图时 if (tabControl1.SelectedIndex == 0) { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axMapControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; } //当选中为布局视图时 if (tabControl1.SelectedIndex == 1) { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; pCommand.OnCreate(this.axPageLayoutControl1.Object); this.axPageLayoutControl1.CurrentTool = pTool; } }
private void MainForm_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; //打开最大化 m_MapView = new MapView(this, axMapControl1); axMapControl1.LoadMxFile(@"地图数据\wuhan.mxd");//自动读入数据 axMapControl1.get_Layer(0).MinimumScale = 264779; //以下为全图浏览功能 m_MapView.CurMapOperation = MapOperation.MapFullScope; //以下为Pan功能 ESRI.ArcGIS.SystemUI.ICommand Pan = new ControlsMapPanToolClass(); Pan.OnCreate(axMapControl1.Object); Pan.OnClick(); axMapControl1.CurrentTool = (ITool)Pan; //////////////////////// string mystr; OleDbConnection myconn = new OleDbConnection(); DataSet myds1 = new DataSet(); DataSet myds2 = new DataSet(); mystr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + @"Tour.mdb"; myconn.ConnectionString = mystr; myconn.Open(); OleDbDataAdapter myda1 = new OleDbDataAdapter("SELECT distinct 几日游 FROM Tourline", myconn); myda1.Fill(myds1, "Tourline"); comboBox1.DataSource = myds1.Tables["Tourline"]; comboBox1.DisplayMember = "几日游"; OleDbDataAdapter myda2 = new OleDbDataAdapter("SELECT distinct 类型 FROM Tourline", myconn); myda2.Fill(myds2, "Tourline"); comboBox2.DataSource = myds2.Tables["Tourline"]; comboBox2.DisplayMember = "类型"; myconn.Close(); comboBox1.Text = ""; comboBox2.Text = ""; }
/// <summary> /// 结束操作 /// </summary> public void ReleaseCommond() { mapControl.OnMouseDown -= mapControl_OnMouseDown; mapControl.OnMouseMove -= mapControl_OnMouseMove; mapControl.OnMouseUp -= mapControl_OnMouseUp; mapControl.OnKeyDown -= mapControl_OnKeyDown; if (CommondExecutedEvent != null) { MessageEventArgs message = new MessageEventArgs() { Describe = "选择图元", Data = listElements, ToolType = ToolTypeEnum.Select }; CommondExecutedEvent(this, message); } ICommand tool = new ControlsMapPanToolClass(); tool.OnCreate(mapControl.Object); mapControl.CurrentTool = tool as ITool; }
void IGMap.Pan() { ICommand command = new ControlsMapPanToolClass(); command.OnCreate(this._hook); (this._mapHook).CurrentTool = (ITool)command; }
private void dotNetBarManager1_ItemClick(object sender, EventArgs e) { AxMapControl pAxMapControl = this.axMapControlMain; BaseItem item = sender as BaseItem; if (item == null) return; iFlagSelection = -1; switch (item.Name) { //新建工程 case "mFileNewProject": case "bStandardNewProject": ESRISysUI.ICommand pNewProject = new ESRICmdLib.ControlsNewDocCommandClass(); pNewProject.OnCreate(pAxMapControl.Object); pNewProject.OnClick(); break; case "mFileOpenProject": case "bStandardOpenProject": ESRISysUI.ICommand pOpenProject = new ControlsOpenDocCommandClass(); pOpenProject.OnCreate(pAxMapControl.Object); pOpenProject.OnClick(); break; case "mFileSaveProject": case "bStandardSaveProject": saveMapDocument(pAxMapControl); break; case "mFileSaveAsProject": ESRISysUI.ICommand pSaveAsProject = new ControlsSaveAsDocCommandClass(); pSaveAsProject.OnCreate(pAxMapControl.Object); pSaveAsProject.OnClick(); break; case "mFileMapExport": case "bStandardMapExport": ESRISysUI.ICommand pMapExport = new ESRICmdLib.ControlsExportMapCommandClass(); pMapExport.OnCreate(pAxMapControl.Object); pMapExport.OnClick(); break; case "mFileMapPrint": case "bStandardPrint": ESRISysUI.ICommand pMapPrint = new ESRICmdLib.ControlsPrintMapCommandClass(); pMapPrint.OnCreate(pAxMapControl.Object); pMapPrint.OnClick(); break; case "mFileAddData": case "bStandardAddData": ESRISysUI.ICommand pAddData = new ControlsAddDataCommandClass(); pAddData.OnCreate(pAxMapControl.Object); pAddData.OnClick(); break; case "mFileExitSystem": this.Close(); break; case "mViewLayerManagement": this.barLayerManagement.Visible = (item as ButtonItem).Checked; break; //mViewToolbox case "mViewToolboxStandard": this.barToolboxStandard.Visible = (item as ButtonItem).Checked; break; case "mViewToolboxMap": this.barToolboxMap.Visible = (item as ButtonItem).Checked; break; case "mViewStatusbar": this.statusStripMain.Visible = (item as ButtonItem).Checked; break; case "mEcoRedLineGeoHazards": break; case "mEcoRedLineTerrain": frmTerrain pFrmTerrain = new frmTerrain(pAxMapControl.Map); pFrmTerrain.ShowDialog(); break; case "mEcoRedLineWSCons": frmWaterSoilConservation pFrmWaterSoilConervation = new frmWaterSoilConservation(pAxMapControl.Map); pFrmWaterSoilConervation.ShowDialog(); break; case "mEcoRedLineWCons": frmWaterConervation pFrmWaterConervation = new frmWaterConervation(pAxMapControl.Map); pFrmWaterConervation.ShowDialog(); break; case "mEcoRedLineFlood": MessageBox.Show("正在研发!"); break; case "mEcoRedLineBiodiversity": MessageBox.Show("正在研发!"); break; //预测 case "mTrendPop": frmPOP pFrmPop = new frmPOP(); pFrmPop.ShowDialog(); break; case "mTrendGdp": frmGDP pFrmGdp = new frmGDP(); pFrmGdp.ShowDialog(); break; case "mTrendLand": MessageBox.Show("正在研发!"); break; case "mOptDLS": frmDLSSimulation pFrmDLSSimulation = new frmDLSSimulation(pAxMapControl.Map); pFrmDLSSimulation.ShowDialog(); break; //空间分析 case "mSpBuffer": frmBuffer pFrmBuffer = new frmBuffer(pAxMapControl.Map); pFrmBuffer.ShowDialog(); pFrmBuffer.Dispose(); break; case "mSpClip": frmClips pFrmClip = new frmClips(pAxMapControl.Map); pFrmClip.ShowDialog(); pFrmClip.Dispose(); break; case "mSpReClass": frmRasterReClass pFrmRaterReClass = new frmRasterReClass(pAxMapControl.Map); pFrmRaterReClass.ShowDialog(); pFrmRaterReClass.Dispose(); break; case "mSpSlope": frmSlope pFrmSlope = new frmSlope(pAxMapControl.Map); pFrmSlope.ShowDialog(); pFrmSlope.Dispose(); break; case "mSpAspect": frmAspect pFrmAspect = new frmAspect(pAxMapControl.Map); pFrmAspect.ShowDialog(); pFrmAspect.Dispose(); break; case "mSpDtFeature2Raster": frmFeatureToRaster pFrmFeatureToRaster = new frmFeatureToRaster(pAxMapControl.Map); pFrmFeatureToRaster.ShowDialog(); pFrmFeatureToRaster.Dispose(); break; case "mSpDtRaster2Feature": frmRasterToFeature pFrmRasterToFeature = new frmRasterToFeature(pAxMapControl.Map); pFrmRasterToFeature.ShowDialog(); pFrmRasterToFeature.Dispose(); break; case "mSpStatistic": frmStatistic pFrmStatistic = new frmStatistic(pAxMapControl.Map); pFrmStatistic.ShowDialog(); pFrmStatistic.Dispose(); break; case "mHelpHelp": //PageLayout.frmPageLayout pageLayout = new PageLayout.frmPageLayout(this.mapControl.Object as IMapControl3); //pageLayout.Owner = this; //pageLayout.Show(); MessageBox.Show("正在研发!"); break; case "mHelpAbout": frmReport p = new frmReport(pAxMapControl.Map); p.ShowDialog(); p.Dispose(); //RasterSymbology.frmSymbology p = new RasterSymbology.frmSymbology(this._mapControl.ActiveView.FocusMap.get_Layer(0) as IRasterLayer, this._mapControl as IMapControl4,this._tocControl as ITOCControl2); //p.ShowDialog(); //p.Dispose(); //MessageBox.Show("正在研发!"); break; //地图操作工具栏 case "bMapZoomIn": ESRISysUI.ICommand pZoomInTool = null; pZoomInTool = new ControlsMapZoomInToolClass(); pZoomInTool.OnCreate(pAxMapControl.Object); pAxMapControl.CurrentTool = pZoomInTool as ESRISysUI.ITool; break; case "bMapZoomOut": ESRISysUI.ICommand pZoomOutTool = null; pZoomOutTool = new ControlsMapZoomOutToolClass(); pZoomOutTool.OnCreate(pAxMapControl.Object); pAxMapControl.CurrentTool = pZoomOutTool as ESRISysUI.ITool; break; case "bMapPan": ESRISysUI.ICommand pPan = null; pPan = new ControlsMapPanToolClass(); pPan.OnCreate(pAxMapControl.Object); pAxMapControl.CurrentTool = pPan as ESRISysUI.ITool; break; case "bMapFullExtent": ESRISysUI.ICommand pFullExtent = null; pFullExtent = new ControlsMapFullExtentCommandClass(); pFullExtent.OnCreate(pAxMapControl.Object); pFullExtent.OnClick(); break; case "bMapFixedZoomIn": ESRISysUI.ICommand pFixdZoomIn = null; pFixdZoomIn = new ControlsMapZoomInFixedCommandClass(); pFixdZoomIn.OnCreate(pAxMapControl.Object); pFixdZoomIn.OnClick(); break; case "bMapFixedZoomOut": ESRISysUI.ICommand pFixedZoomOut = null; pFixedZoomOut = new ControlsMapZoomOutFixedCommandClass(); pFixedZoomOut.OnCreate(pAxMapControl.Object); pFixedZoomOut.OnClick(); break; case "bMapPreviousExtent": ESRISysUI.ICommand pPreviousExtent = null; pPreviousExtent = new ControlsMapZoomToLastExtentForwardCommandClass(); pPreviousExtent.OnCreate(pAxMapControl.Object); pPreviousExtent.OnClick(); break; case "bMapNextExtent": ESRISysUI.ICommand pNextExtent = null; pNextExtent = new ControlsMapZoomToLastExtentBackCommandClass(); pNextExtent.OnCreate(pAxMapControl.Object); pNextExtent.OnClick(); break; case "bMapSelection": bMapSelection.ImageIndex = 14; iFlagSelection = 0; break; case "bMapSelectRectangle": bMapSelection.ImageIndex = 14; iFlagSelection = 1; break; case "bMapSelectPolygon": bMapSelection.ImageIndex = 15; iFlagSelection = 2; break; case "bMapSelectCircle": bMapSelection.ImageIndex = 16; iFlagSelection = 3; break; case "bMapSelectLine": bMapSelection.ImageIndex =17; iFlagSelection = 4; break; case "bMapSelectionClear": ESRISysUI.ICommand pSelectionClear = null; pSelectionClear = new ControlsClearSelectionCommandClass(); pSelectionClear.OnCreate(pAxMapControl.Object); pSelectionClear.OnClick(); //IActiveView pActiveView=(IActiveView)(this.axMapControlMain.Map); //pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); //this.axMapControlMain.Map.ClearSelection(); //pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); //this.axMapControlMain.CurrentTool = null; break; case "bMapIdentify": //ESRISysUI.ICommand pIdentify = null; //pIdentify = new ControlsMapIdentifyToolClass(); //pIdentify.OnCreate(pAxMapControl.Object); //pAxMapControl.CurrentTool = pIdentify as ESRISysUI.ITool; CMapTool cIden = new CMapTool(); cIden.Identify(this.axMapControlMain); break; case "bMapMeasure": //ESRISysUI.ICommand pMeasure = null; //pMeasure = new ControlsMapMeasureToolClass(); //pMeasure.OnCreate(pAxMapControl.Object); //pAxMapControl.CurrentTool = pMeasure as ESRISysUI.ITool; CMapTool cMea = new CMapTool(); cMea.Measure(this.axMapControlMain); break; default: //MessageBox.Show("正在研发!"); break; } }
private void Form1_Load(object sender, EventArgs e) { axTOCControl1.SetBuddyControl(axMapControl1); //启动默认为pan ICommand command = new ControlsMapPanToolClass(); command.OnCreate(axMapControl1.Object); axMapControl1.CurrentTool = command as ITool; m_tocControl = (ITOCControl2)axTOCControl1.Object; m_mapControl = (IMapControl3)axMapControl1.Object; m_menuMap = new ToolbarMenuClass(); m_menuLayer = new ToolbarMenuClass(); istoolenable(false); }
private void bubbleBtnPan_Click(object sender, DevComponents.DotNetBar.ClickEventArgs e) { ICommand pCommand = new ControlsMapPanToolClass(); ITool pTool = pCommand as ITool; switch (this.tabControl.SelectedTabIndex) { case 0: pCommand.OnCreate(this.mainMapControl.Object); this.mainMapControl.CurrentTool = pTool; break; case 1: pCommand.OnCreate(this.axPageLayoutControl.Object); this.axPageLayoutControl.CurrentTool = pTool; break; } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MapControl_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { if (this.blTrackRectangle == true) { this.mIEnvelope = this.MapControl.TrackRectangle(); this.blTrackRectangle = false; ICommand mICommand = new ControlsMapPanToolClass(); mICommand.OnCreate(this.MapControl.Object); this.MapControl.CurrentTool = mICommand as ITool; ISimpleLineSymbol mISimpleLineSymbol = new SimpleLineSymbolClass(); RgbColor mRgbColor = new RgbColor(); mRgbColor.Red = 255; mRgbColor.Green = 0; mRgbColor.Blue = 0; mISimpleLineSymbol.Color = mRgbColor; mISimpleLineSymbol.Width = 1; ILineElement mILineElement = new LineElementClass(); mILineElement.Symbol = mISimpleLineSymbol; IElement mIElement = mILineElement as IElement; IPointCollection mIPointCollection = new PolylineClass(); mIPointCollection.AddPoint(this.mIEnvelope.UpperLeft); mIPointCollection.AddPoint(this.mIEnvelope.LowerLeft); mIPointCollection.AddPoint(this.mIEnvelope.LowerRight); mIPointCollection.AddPoint(this.mIEnvelope.UpperRight); mIPointCollection.AddPoint(this.mIEnvelope.UpperLeft); IPolyline mIPolyline = (IPolyline)mIPointCollection; mIElement.Geometry = mIPolyline; this.mIGraphicsContainer.AddElement(mIElement, 0); this.MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, this.mIEnvelope); List <IFeature> lstIFeatureall = this.mIFeatureLayer.GetLstIFeature("", false); List <double> Xmins = new List <double>(); List <double> Xmaxs = new List <double>(); List <double> Ymins = new List <double>(); List <double> Ymaxs = new List <double>(); for (int i = 0; i < lstIFeatureall.Count; i++) { Xmins.Add(lstIFeatureall[i].GetStringValue("Xmin").ToDouble().RetentionDecimal(6)); Xmaxs.Add(lstIFeatureall[i].GetStringValue("Xmax").ToDouble().RetentionDecimal(6)); Ymins.Add(lstIFeatureall[i].GetStringValue("Ymin").ToDouble().RetentionDecimal(6)); Ymaxs.Add(lstIFeatureall[i].GetStringValue("Ymax").ToDouble().RetentionDecimal(6)); } double XmaxAll = Xmaxs.Max(); double XminAll = Xmins.Min(); double YminAll = Ymins.Min(); double YmaxAll = Ymaxs.Max(); List <IFeature> lstIFeature = this.mIFeatureLayer.GetLstIFeature(this.mIEnvelope, "", esriSpatialRelEnum.esriSpatialRelIntersects); if (lstIFeature.Count == 0) { MessageBox.Show("选了0块!请重新框!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } GC.Collect(); MessageBox.Show("框中" + lstIFeature.Count.ToString() + "个", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); aa = DateTime.Now; double ownXmin = this.mIEnvelope.XMin.RetentionDecimal(6); //自己框Xmin double ownXmax = this.mIEnvelope.XMax.RetentionDecimal(6); //自己框Xmin double ownYmin = this.mIEnvelope.YMin.RetentionDecimal(5); //自己框Xmin double ownYmax = this.mIEnvelope.YMax.RetentionDecimal(5); //自己框Xmin if (ownXmax > XmaxAll) { ownXmax = XmaxAll; } if (ownYmax > YmaxAll) { ownYmax = YmaxAll; } if (ownXmin < XminAll) { ownXmin = XminAll; } if (ownYmin < YminAll) { ownYmin = YminAll; } double CellSize = lstIFeature[0].GetStringValue("CSize").ToDouble().RetentionDecimal(3);//影像像素宽度 int allrow = Convert.ToInt32(Math.Round((XmaxAll - XminAll) / CellSize / lstIFeatureall[0].GetStringValue("Width").ToInt32())); int allY = Convert.ToInt32((YmaxAll - YminAll) / CellSize); int X_max = Convert.ToInt32((ownXmax - XminAll) / CellSize); //像素坐标Xmax int X_min = Convert.ToInt32((ownXmin - XminAll) / CellSize); //像素坐标Xmin int Y_max = Convert.ToInt32((ownYmax - YminAll) / CellSize); //像素坐标Ymax int Y_min = Convert.ToInt32((ownYmin - YminAll) / CellSize); //像素坐标Ymin if (X_max - X_min >= 10000 || Y_max - Y_min >= 10000) { MessageBox.Show("框选范围过大请再次尝试,请将范围控制在10000*10000像素"); return; } List <img> imgs = new List <img>(); List <int> rows = new List <int>(); List <int> cols = new List <int>(); List <string> names = new List <string>(); for (int i = 0; i < lstIFeature.Count; i++) { string Name = lstIFeature[i].GetStringValue("Name");//影像名字 ILayer mILayer = this.MapControl.GetILayer(Name); IRasterLayer mIRasterLayer = mILayer as IRasterLayer; string Path = mIRasterLayer.FilePath; //影像文件路径 int Width = lstIFeature[i].GetStringValue("Width").ToInt32(); //影像宽 int Height = lstIFeature[i].GetStringValue("Height").ToInt32(); //影像高 double Xmin = lstIFeature[i].GetStringValue("Xmin").ToDouble().RetentionDecimal(6); //影像包围框Xmin double Xmax = lstIFeature[i].GetStringValue("Xmax").ToDouble().RetentionDecimal(6); //影像包围框Xmax double Ymin = lstIFeature[i].GetStringValue("Ymin").ToDouble().RetentionDecimal(5); //影像包围框Ymin double Ymax = lstIFeature[i].GetStringValue("Ymax").ToDouble().RetentionDecimal(5); //影像包围框Ymax int col = Convert.ToInt32(Math.Ceiling(Math.Round((Xmax - XminAll) / CellSize) / lstIFeatureall[0].GetStringValue("Width").ToInt32())); int row = allrow - Convert.ToInt32(Math.Ceiling(Math.Round((Ymax - YminAll) / CellSize) / lstIFeatureall[0].GetStringValue("Height").ToInt32())) + 1; rows.Add(row); cols.Add(col); names.Add(Name); imgs.Add(new img(row, col, new Mat(Path), Path, Convert.ToInt32((Xmax - XminAll) / CellSize), Convert.ToInt32((Xmin - XminAll) / CellSize), Convert.ToInt32(allY - (Ymax - YminAll) / CellSize), Convert.ToInt32(allY - (Ymin - YminAll) / CellSize))); } SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "*.txt|*.txt"; paixu(ref imgs, rows, cols); printscreen(imgs, cols, rows, X_min, allY - Y_max, X_max, allY - Y_min, names, saveFileDialog); } }
public override void OnClick() { ICommand cmd = new ControlsMapPanToolClass(); cmd.OnCreate(m_mapControl); m_mapControl.CurrentTool = cmd as ITool; }