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

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;
        } 


posted @ 2009-02-10 09:20  温景良(Jason)  Views(1194)  Comments(0Edit  收藏  举报