public override void OnMouseMove(int Button, int Shift, int X, int Y)
        {
            // TODO:  Add MeasuredisTool.OnMouseMove implementation
            IPoint pPnt;

            pPnt = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
            //移动图片
            IEnvelope MEnvelop = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds;
            IEnvelope FullEnv  = m_hookHelper.ActiveView.FullExtent;


            if (m_FeedbackLine != null || m_FeedbackPolygon != null)
            {
                if (MEnvelop.XMax - pPnt.X > MEnvelop.Width / 50)
                {
                    right = true;
                }
                if (pPnt.X - MEnvelop.XMin > MEnvelop.Width / 50)
                {
                    left = true;
                }
                if (MEnvelop.YMax - pPnt.Y > MEnvelop.Height / 50)
                {
                    top = true;
                }
                if (pPnt.Y - MEnvelop.YMin > MEnvelop.Height / 50)
                {
                    bottom = true;
                }

                if (MEnvelop.XMax - pPnt.X < MEnvelop.Width / 100)
                {
                    double    vWidth  = MEnvelop.Width;
                    IEnvelope MoveEnv = new EnvelopeClass();
                    MoveEnv.XMin = MEnvelop.XMin + vWidth / 2;
                    MoveEnv.XMax = MEnvelop.XMax + vWidth / 2;
                    MoveEnv.YMax = MEnvelop.YMax;
                    MoveEnv.YMin = MEnvelop.YMin;
                    if (MoveEnv.XMax >= FullEnv.XMax)
                    {
                        MoveEnv.XMin = MoveEnv.XMin - (MoveEnv.XMax - FullEnv.XMax);
                        MoveEnv.XMax = FullEnv.XMax;
                    }
                    if (right)
                    {
                        m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds = MoveEnv;
                        right = false;
                    }
                    m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                }
                if (pPnt.X - MEnvelop.XMin < MEnvelop.Width / 100)
                {
                    double vWidth = MEnvelop.Width;

                    IEnvelope MoveEnv = new EnvelopeClass();
                    MoveEnv.XMin = MEnvelop.XMin - vWidth / 2;
                    MoveEnv.XMax = MEnvelop.XMax - vWidth / 2;
                    MoveEnv.YMax = MEnvelop.YMax;
                    MoveEnv.YMin = MEnvelop.YMin;
                    if (MoveEnv.XMin <= FullEnv.XMin)
                    {
                        MoveEnv.XMax = MoveEnv.XMax + (FullEnv.XMin - MoveEnv.XMin);
                        MoveEnv.XMin = FullEnv.XMin;
                    }
                    if (left)
                    {
                        m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds = MoveEnv;
                        left = false;
                    }
                    m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                }
                if (MEnvelop.YMax - pPnt.Y < MEnvelop.Height / 100)
                {
                    double    vHeight = MEnvelop.Height;
                    IEnvelope MoveEnv = new EnvelopeClass();
                    MoveEnv.XMin = MEnvelop.XMin;
                    MoveEnv.XMax = MEnvelop.XMax;
                    MoveEnv.YMax = MEnvelop.YMax + vHeight / 2;
                    MoveEnv.YMin = MEnvelop.YMin + vHeight / 2;
                    if (MoveEnv.YMax >= FullEnv.YMax)
                    {
                        MoveEnv.YMin = MoveEnv.YMin - (MoveEnv.YMax - FullEnv.YMax);
                        MoveEnv.YMax = FullEnv.YMax;
                    }
                    if (top)
                    {
                        top = false;
                        m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds = MoveEnv;
                    }
                    m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                }
                if (pPnt.Y - MEnvelop.YMin < MEnvelop.Height / 100)
                {
                    double    vHeight = MEnvelop.Height;
                    IEnvelope MoveEnv = new EnvelopeClass();
                    MoveEnv.XMin = MEnvelop.XMin;
                    MoveEnv.XMax = MEnvelop.XMax;
                    MoveEnv.YMax = MEnvelop.YMax - vHeight / 2;
                    MoveEnv.YMin = MEnvelop.YMin - vHeight / 2;
                    if (MoveEnv.YMin <= FullEnv.YMin)
                    {
                        MoveEnv.YMax = MoveEnv.YMax + (FullEnv.YMin - MoveEnv.YMin);
                        MoveEnv.YMin = FullEnv.YMin;
                    }
                    if (bottom)
                    {
                        m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds = MoveEnv;
                        bottom = false;
                    }
                    m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                }
            }


            frm.frmMove(ref pPnt, ref m_FeedbackLine);
            frm.frmMove(ref pPnt, ref m_FeedbackPolygon);
        }