当前位置:首页 > ArcEngine主要功能源码
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)
共分享92篇相关文档