ArcEngine中使用上下左右键移动地图

来源:互联网 发布:淘宝客服新手教程视频 编辑:程序博客网 时间:2024/06/10 00:30

      因项目需要,需对mapcontrol控件响应上下左右键,从网上找的方法都一样,都值提到了需要设置axMapControl1的KeyIntercept属性为1,但这样做的结果是,除了自己在onkeydown中设置的平移1/10个屏幕大小外,系统还会有一个默认的平移操作。经研究发现,设置axMapControl1的autokeyboardscrolling属性为false即可屏蔽系统默认的对上下左右键的相应方法。

axMapControl1.AutoKeyBoardScrolling=false;axMapControl1.KeyIntercept = 1;private void axMapControl1_OnKeyDown(object sender, ESRI.ArcGIS.MapControl.IMapControlEvents2_OnKeyDownEvent e)        {            switch (e.keyCode)            {                case (int)System.Windows.Forms.Keys.Up:                    PanMap(0d, 0.5d);                    break;                case (int)System.Windows.Forms.Keys.Down:                    PanMap(0d, -0.5d);                    break;                case (int)System.Windows.Forms.Keys.Left:                    PanMap(-0.5d, 0d);                    break;                case (int)System.Windows.Forms.Keys.Right:                    PanMap(0.5d, 0d);                    break;            }        }        private void PanMap(double ratioX, double ratioY)        {            //Pans map by amount specified given in a fraction of the extent e.g. rationX=0.5, pan right by half a screen             IEnvelope envelope = axMapControl1.Extent;            double h = envelope.Width;            double w = envelope.Height;            envelope.Offset(h * ratioX, w * ratioY);            axMapControl1.Extent = envelope;        }