public void OnMouseDown(int button, int shift, int x, int y)
 {
     try
     {
         //转换鼠标点击位置起始点为地图坐标
         m_startPt = m_activeView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y);
         if (m_EngineEditor == null)
         {
             return;
         }
         if (m_EngineEditor.EditState != esriEngineEditState.esriEngineStateEditing)
         {
             return;
         }
         if (m_EngineEditLayers == null)
         {
             return;
         }
         IFeatureLayer pFeatLyr = m_EngineEditLayers.TargetLayer;
         if (pFeatLyr == null)
         {
             return;
         }
         //获取要移动几何对象
         IFeatureCursor pFeatCur = MapManager.GetSelectedFeatures(pFeatLyr);
         if (pFeatCur == null)
         {
             MessageBox.Show("请选择要移动要素!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         IFeature pFeature = pFeatCur.NextFeature();
         //当移动的对象为空时,首先进行对象实例化
         if (m_moveGeoFeedBack == null)
         {
             m_moveGeoFeedBack = new MoveGeometryFeedbackClass();
         }
         m_moveGeoFeedBack.Display = m_activeView.ScreenDisplay;
         while (pFeature != null)
         {
             m_moveGeoFeedBack.AddGeometry(pFeature.Shape);
             pFeature = pFeatCur.NextFeature();
         }
         //添加起始点
         m_moveGeoFeedBack.Start(m_startPt);
         System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatCur);
     }
     catch (Exception ex)
     {
         //SysLogHelper.WriteOperationLog("要素移动错误", ex.Source, "数据编辑");
     }
 }
示例#2
0
        public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            if (Button != 1 || m_MapControl.Map.SelectionCount == 0)
            {
                return;
            }
            MoData.v_bVertexSelectionTracker = false;

            m_pNewLineFeedback      = new NewLineFeedbackClass();
            m_pMoveGeometryFeedback = new MoveGeometryFeedbackClass();
            IDisplayFeedback pDisplayFeedback = m_pMoveGeometryFeedback as IDisplayFeedback;

            pDisplayFeedback.Display = m_hookHelper.ActiveView.ScreenDisplay;

            m_pPtStart = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
            m_pNewLineFeedback.Display = m_hookHelper.ActiveView.ScreenDisplay;
            m_pNewLineFeedback.Start(m_pPtStart);

            //只刷新选中的地物
            IEnumFeature pEnumFeature = m_MapControl.Map.FeatureSelection as IEnumFeature;
            IInvalidArea pInvalidArea = new InvalidAreaClass();

            pInvalidArea.Display = m_hookHelper.ActiveView.ScreenDisplay;
            pInvalidArea.Add(pEnumFeature);

            pEnumFeature.Reset();
            IFeature pFeature = pEnumFeature.Next();

            m_pMoveSet = new SetClass();
            while (pFeature != null)
            {
                //'判断选中的要素是否启动了编辑
                IFeatureClass  pFeatureClass = pFeature.Class as IFeatureClass;
                IDataset       pDataset      = pFeatureClass as IDataset;
                IWorkspaceEdit pWSEdit       = pDataset.Workspace as IWorkspaceEdit;
                if (pWSEdit != null)
                {
                    if (pWSEdit.IsBeingEdited())
                    {
                        m_pMoveGeometryFeedback.AddGeometry(pFeature.Shape);
                        m_pMoveSet.Add(pFeature);
                    }
                }
                pFeature = pEnumFeature.Next();
            }

            m_pMoveGeometryFeedback.Start(m_pPtStart);

            m_bMouseDown = true;
        }