コード例 #1
0
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            if (m_hookHelper != null)
            {
                ClsMapLayer       pConvertPixelDistanceToMapDistance = new ClsMapLayer();
                IEnvelope         pEnv;
                IFeature          pFeat = null;
                IActiveView       pActiveView;
                ICursor           pCursor = null;
                IFeatureCursor    pFeatCursor;
                IGeometry         pGeo;
                IFeatureLayer     pFeatLyr;
                ICompositeLayer   pGroupLyr;
                IFeatureSelection pFeatSel;
                pEnv = new EnvelopeClass();

                if (ClsDeclare.g_pMap.SelectionCount < 1)
                {
                    //ClsDeclare.g_ErrorHandler.DisplayInformation("图面上没有选择地物,无法放大", false, "确定",null);
                    return;
                }
                try
                {
                    for (int i = 0; i < ClsDeclare.g_pMap.LayerCount; i++)
                    {
                        if (ClsDeclare.g_pMap.get_Layer(i) is IGroupLayer && (ClsDeclare.g_pMap.get_Layer(i).Name != "示意图"))
                        {
                            pGroupLyr = ClsDeclare.g_pMap.get_Layer(i) as ICompositeLayer;
                            for (int j = 0; j < pGroupLyr.Count; j++)
                            {
                                if (pGroupLyr.get_Layer(j) is IGeoFeatureLayer)
                                {
                                    pFeatLyr = pGroupLyr.get_Layer(j) as IFeatureLayer;
                                    pFeatSel = (IFeatureSelection)pFeatLyr;
                                    if (pFeatSel.SelectionSet.Count == 0)
                                    {
                                        continue;
                                    }
                                    pFeatSel.SelectionSet.Search(null, false, out pCursor);
                                    pFeatCursor = (IFeatureCursor)pCursor;
                                    pFeat       = pFeatCursor.NextFeature();
                                    while (pFeat != null)
                                    {
                                        pGeo = pFeat.Shape;
                                        pEnv.Union(pGeo.Envelope);
                                        pFeat = pFeatCursor.NextFeature();
                                    }
                                }
                            }
                        }
                        else if (ClsDeclare.g_pMap.get_Layer(i) is IGeoFeatureLayer)
                        {
                            pFeatLyr = ClsDeclare.g_pMap.get_Layer(i) as IFeatureLayer;
                            pFeatSel = (IFeatureSelection)pFeatLyr;
                            if (pFeatSel.SelectionSet.Count == 0)
                            {
                                continue;
                            }
                            pFeatSel.SelectionSet.Search(null, false, out pCursor);
                            pFeatCursor = (IFeatureCursor)pCursor;
                            pFeat       = pFeatCursor.NextFeature();
                            while (pFeat != null)
                            {
                                pGeo = pFeat.Shape;
                                pEnv.Union(pGeo.Envelope);
                                pFeat = pFeatCursor.NextFeature();
                            }
                        }
                    }
                    pActiveView = (IActiveView)ClsDeclare.g_pMap;
                    double dblLen;
                    dblLen = pConvertPixelDistanceToMapDistance.ConvertPixelDistanceToMapDistance(pActiveView, 30);
                    pEnv.Expand(dblLen, dblLen, false);
                    pActiveView.Extent = pEnv;
                    pActiveView.Refresh();
                }
                catch (Exception)
                {
                    //ClsDeclare.g_ErrorHandler.DisplayInformation(ex.Message, false, "确定",null);
                    throw;
                }
            }
            else if (m_sceneHookHelper != null)
            {
            }
            else if (m_globeHookHelper != null)
            {
            }
        }
コード例 #2
0
        public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            try
            {
                //if (ClsDeclare.g_pMap.SelectionCount != 0)
                //    ClsDeclare.g_pMap.ClearSelection();
                ClsMapLayer pConvert = new ClsMapLayer();
                IActiveView pActiveView;
                pActiveView = m_hookHelper.ActiveView;

                IPoint pPoint;
                pPoint = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);

                ISelectionEnvironment pSelectEnv = new SelectionEnvironmentClass();
                double Length;
                Length = pConvert.ConvertPixelDistanceToMapDistance(pActiveView, pSelectEnv.SearchTolerance);

                ITopologicalOperator pTopoOpera;
                IGeometry            pBuffer;
                pTopoOpera  = (ITopologicalOperator)pPoint;
                pBuffer     = pTopoOpera.Buffer(Length);
                m_pGeometry = pBuffer.Envelope;
                esriSelectionResultEnum pSelectType = new esriSelectionResultEnum();
                switch (Shift)
                {
                case 0:
                {
                    pSelectType = esriSelectionResultEnum.esriSelectionResultNew;
                    switch (mvarSelectMethod)
                    {
                    case "New":               //新建选择结果集
                        pSelectType = esriSelectionResultEnum.esriSelectionResultNew;
                        break;

                    case "Add":               //增加选择结果集 按下Shift键
                        pSelectType = esriSelectionResultEnum.esriSelectionResultAnd;
                        break;

                    case "Sub":              //减少选择结果集 按下Alt键
                        pSelectType = esriSelectionResultEnum.esriSelectionResultSubtract;
                        break;

                    case "Xor":               //对已有的选择集做异或 按下Ctrl键
                        pSelectType = esriSelectionResultEnum.esriSelectionResultXOR;
                        break;
                    }
                    break;
                }

                case 1:
                    pSelectType = esriSelectionResultEnum.esriSelectionResultAdd;
                    break;

                case 2:
                    pSelectType = esriSelectionResultEnum.esriSelectionResultXOR;
                    break;

                case 3:
                    pSelectType = esriSelectionResultEnum.esriSelectionResultNew;
                    break;

                case 4:
                    pSelectType = esriSelectionResultEnum.esriSelectionResultSubtract;
                    break;
                }
                if (m_FeatClsCln == null)
                {
                    bool blntemp = true;
                    m_pQueryResultCln = new Collection();
                    ClsSelectQuery.SelectGeometry(ref blntemp, m_pGeometry, pSelectType, ref m_pQueryResultCln);
                    pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                    //TODO: FrmQuery的用法
                    if (m_frmQuery == null)
                    {
                        m_frmQuery = new FrmQuery();
                    }
                    if (m_frmQuery.IsDisposed)
                    {
                        m_frmQuery = new FrmQuery();
                    }

                    m_frmQuery.QueryResultCln = m_pQueryResultCln;
                    m_frmQuery.ReLoadQueryResult();
                    m_frmQuery.Visible = false;
                    m_frmQuery.Show((Form)(ClsDeclare.g_Sys.FrmMain));
                }
                m_pQueryResultCln = null;
                if ((ClsDeclare.g_pMap.SelectionCount > ClsDeclare.g_Sys.MaxSelectCount) && (ClsDeclare.g_Sys.MaxSelectCount != 0))
                {
                    //if (ClsDeclare.g_ErrorHandler.DisplayInformation("你选择的结果大于" + Convert.ToString(ClsDeclare.g_Sys.MaxSelectCount) + "个地物,是否继续选择操作?", true, "确定", "取消") == false)
                    {
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                        ClsDeclare.g_pMap.ClearSelection();
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                    }
                }
            }
            catch (Exception)
            {
                //ClsDeclare.g_ErrorHandler.HandleError(true, null, 0, null, ex.StackTrace);
                throw;
            }
        }
コード例 #3
0
        public override void OnMouseDown(int Button, int Shift, int X, int Y)
        {
            if (m_hookHelper != null)
            {
                ClsMapLayer pConvert = new ClsMapLayer();
                IGeometry   pGeometry;
                IActiveView pActiveView;
                pActiveView = m_hookHelper.ActiveView;

                IPoint pPoint;
                pPoint    = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
                pGeometry = (IGeometry)pPoint;
                if (ClsDeclare.g_pMap.SelectionCount != 0)
                {
                    ClsDeclare.g_pMap.ClearSelection();
                }
                pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
                ISelectionEnvironment pSelectEnv = new SelectionEnvironmentClass();
                double length;
                length = pConvert.ConvertPixelDistanceToMapDistance(pActiveView, pSelectEnv.SearchTolerance);

                ITopologicalOperator pTopoOpera;
                IGeometry            pBuffer;
                pTopoOpera = (ITopologicalOperator)pGeometry;
                pBuffer    = pTopoOpera.Buffer(length);

                pGeometry = m_pMapControl.TrackPolygon();

                Application.DoEvents();
                m_pMapControl.MousePointer = esriControlsMousePointer.esriPointerHourglass;
                if (pGeometry != null)
                {
                    if (pGeometry.Envelope.IsEmpty)
                    {
                        pGeometry = pBuffer.Envelope;
                    }
                }
                esriSelectionResultEnum pselecttype = new esriSelectionResultEnum();
                switch (Shift)
                {
                case 0:
                {
                    pselecttype = esriSelectionResultEnum.esriSelectionResultNew;
                    switch (mvarSelectMethod)
                    {
                    case "New":
                        pselecttype = esriSelectionResultEnum.esriSelectionResultNew;
                        break;

                    case "Add":
                        pselecttype = esriSelectionResultEnum.esriSelectionResultAnd;
                        break;

                    case "Sub":
                        pselecttype = esriSelectionResultEnum.esriSelectionResultSubtract;
                        break;

                    case "Xor":
                        pselecttype = esriSelectionResultEnum.esriSelectionResultXOR;
                        break;
                    }
                    break;
                }

                case 1:
                    pselecttype = esriSelectionResultEnum.esriSelectionResultAdd;
                    break;

                case 2:
                    pselecttype = esriSelectionResultEnum.esriSelectionResultXOR;
                    break;

                case 3:
                    pselecttype = esriSelectionResultEnum.esriSelectionResultNew;
                    break;

                case 4:
                    pselecttype = esriSelectionResultEnum.esriSelectionResultSubtract;
                    break;
                }
                if (m_FeatClsCln == null)
                {
                    bool blntemp = false;
                    m_pQueryResultCln = new Collection();
                    ClsSelectQuery.SelectGeometry(ref blntemp, pGeometry, pselecttype, ref m_pQueryResultCln);
                    pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);

                    if (m_frmQuery == null)
                    {
                        m_frmQuery = new FrmQuery();
                    }
                    if (m_frmQuery.IsDisposed)
                    {
                        m_frmQuery = new FrmQuery();
                    }
                    m_frmQuery.QueryResultCln = m_pQueryResultCln;
                    m_frmQuery.ReLoadQueryResult();
                    m_frmQuery.Visible = false;
                    m_frmQuery.Show((Form)(ClsDeclare.g_Sys.FrmMain));
                }
                m_pQueryResultCln = null;

                m_pMapControl.MousePointer = esriControlsMousePointer.esriPointerDefault;
            }
            else if (m_sceneHookHelper != null)
            {
            }
            else if (m_globeHookHelper != null)
            {
            }
        }