ArcEngine主要功能源码 联系客服

发布时间 : 星期五 文章ArcEngine主要功能源码更新完毕开始阅读f8f158ed1ed9ad51f11df256

double dYmin = pActiveView.Extent.YMin - ((pEnvelope.YMin - pActiveView.Extent.YMin)*pActiveView.Extent.Height/

pEnvelope.Height); double dXmax = dXmin + dWidth; double dYmax = dYmin + dHeight;

pEnvelope.PutCoords(dXmin, dYmin, dXmax, dYmax);

}

pActiveView.Extent = pEnvelope; pActiveView.Refresh(); break;

#endregion

#region 漫游

case \:

mainMapControl.Pan(); break;

#endregion

#region 选择要素

case \: IEnvelope pEnv = mainMapControl.TrackRectangle();

IGeometry pGeo = pEnv as IGeometry;

//矩形框若为空,即为点选时,对点范围进行扩展 if (pEnv.IsEmpty == true) {

tagRECT r;

r.left = e.x - 5; r.top = e.y - 5; r.right = e.x + 5; r.bottom = e.y + 5;

pActiveView.ScreenDisplay.DisplayTransformation.TransformRect(pEnv,

ref r, 4);

pEnv.SpatialReference = pActiveView.FocusMap.SpatialReference; }

pGeo = pEnv as IGeometry;

mainMapControl.Map.SelectByShape(pGeo, null, false);

mainMapControl.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);

break;

#endregion

#region 区域导出

case \: //删除视图中数据

mainMapControl.ActiveView.GraphicsContainer.DeleteAllElements(); mainMapControl.ActiveView.Refresh(); IPolygon pPolygon = DrawPolygon(mainMapControl);

if (pPolygon == null) return; ExportMap.AddElement(pPolygon, mainMapControl.ActiveView);

if (frmExpMap == null || frmExpMap.IsDisposed) {

frmExpMap = new FormExportMap(mainMapControl); }

frmExpMap.IsRegion = true;

frmExpMap.GetGeometry = pPolygon as IGeometry; frmExpMap.Show();

frmExpMap.Activate(); break; #endregion

#region 距离量算

case \:

//判断追踪线对象是否为空,若是则实例化并设置当前鼠标点为起始点

if (pNewLineFeedback == null) {

//实例化追踪线对象 pNewLineFeedback = new NewLineFeedbackClass();

pNewLineFeedback.Display = (mainMapControl.Map as IActiveView).ScreenDisplay;

//设置起点,开始动态线绘制

pNewLineFeedback.Start(pPointPt); dToltalLength = 0; }

else //如果追踪线对象不为空,则添加当前鼠标点 {

pNewLineFeedback.AddPoint(pPointPt); }

//pGeometry = m_PointPt; if (dSegmentLength != 0) {

dToltalLength = dToltalLength + dSegmentLength;

}

break; #endregion

#region 面积量算 case \:

if (pNewPolygonFeedback == null) {

//实例化追踪面对象

pNewPolygonFeedback = new NewPolygonFeedback();

pNewPolygonFeedback.Display = (mainMapControl.Map as IActiveView).ScreenDisplay; ;

pAreaPointCol.RemovePoints(0, pAreaPointCol.PointCount);

//开始绘制多边形

pNewPolygonFeedback.Start(pPointPt); pAreaPointCol.AddPoint(pPointPt, ref missing, ref missing); } else {

pNewPolygonFeedback.AddPoint(pPointPt); pAreaPointCol.AddPoint(pPointPt, ref missing, ref missing); }

break; #endregion

#region 要素选择

case \:

IPoint point = new PointClass();

IGeometry pGeometry = point as IGeometry; mainMapControl.Map.SelectByShape(pGeometry, null, false);

mainMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);

break; #endregion

default: break; } }

else if (e.button == 2) {

pMouseOperate = \;

mainMapControl.MousePointer = esriControlsMousePointer.esriPointerDefault; } }

private void mainMapControl_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)