ArcgisEngine实现地图浏览

全图

1
2
3
4
5
    private void FullExtentTSButton_Click(object sender, EventArgs e)
        {
            mainMapControl.Extent = mainMapControl.FullExtent;
    
        }

等比例放大

1
2
3
4
5
6
7
8
9
        private void btnZoomInStep_Click(object sender, EventArgs e)
        {
            IEnvelope pEnvelope;
            pEnvelope = mainMapControl.Extent;
            pEnvelope.Expand(0.5, 0.5, true);   //放大2倍
            mainMapControl.Extent = pEnvelope;
            mainMapControl.ActiveView.Refresh();

        }

等比例缩小

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
        private void btnZoomIOutStep_Click(object sender, EventArgs e)
        {
            IActiveView pActiveView = mainMapControl.ActiveView;
            IPoint centerPoint = new PointClass();
            centerPoint.PutCoords((pActiveView.Extent.XMin + pActiveView.Extent.XMax) / 2, (pActiveView.Extent.YMax + pActiveView.Extent.YMin) / 2);
            IEnvelope envlop = pActiveView.Extent;
            envlop.Expand(1.5, 1.5, true);    //与放大的区别在于Expand的参数不同
            pActiveView.Extent.CenterAt(centerPoint);
            pActiveView.Extent = envlop;
            pActiveView.Refresh();

            //如果觉得乱的话,直接修改放大的参数也将就可以 非万不得已不用
            //IEnvelope pEnvelope;
            //pEnvelope = mainMapControl.Extent;
            //pEnvelope.Expand(1.5, 1.5, true);   //放大2倍
            //mainMapControl.Extent = pEnvelope;
            //mainMapControl.ActiveView.Refresh();


        }

上一视图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
        // 定义全局变量
        IExtentStack pExtentStack;
        private void PreViewTSButton_Click(object sender, EventArgs e)
        {
            pExtentStack = mainMapControl.ActiveView.ExtentStack;
            //判断是否可以回到前一视图,第一个视图没有前视图
            if (pExtentStack.CanUndo())
            {
                pExtentStack.Undo();      //撤销到上一视图范围
                NextViewTSButton.Enabled = true;   //后一视图可以使用
                if (!pExtentStack.CanUndo())
                {
                    PreViewTSButton.Enabled = false;  //前一视图不能使用
                }
            }
            mainMapControl.ActiveView.Refresh();

        }

下一视图

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
        private void NextViewTSButton_Click(object sender, EventArgs e)
        {
            pExtentStack = mainMapControl.ActiveView.ExtentStack;
            //判断是否可以回到后一视图,最后一个视图没有后一视图
            if (pExtentStack.CanRedo())  //如果可以重做下一视图
            {
                pExtentStack.Redo();   //重做到下一视图
                PreViewTSButton.Enabled = true;   //上一视图按钮可以使用

                if (!pExtentStack.CanRedo())  //如果不可以重做下一视图
                {
                    NextViewTSButton.Enabled = false;   //下一视图不能用
                }
            }
            mainMapControl.ActiveView.Refresh();
        }
0%