コード例 #1
0
            public override bool OnScale(ScaleGestureDetector detector)
            {
                float scale = detector.ScaleFactor;

                _padre.mScaleFactor *= detector.ScaleFactor;

                _padre.mScaleFactor = Math.Max(_padre.MIN_ZOOM, Math.Min(_padre.mScaleFactor, _padre.MAX_ZOOM));

                mFocusX = detector.FocusX;
                mFocusY = detector.FocusY;

                if (_padre.mScaleFactor < 2f)
                {
                    // 1 Grabbing
                    float centerX = detector.FocusX;
                    float centerY = detector.FocusY;

                    //	Console.WriteLine("CENTER: x=" + centerX + " y=" + centerY);

                    // 2 Calculating difference
                    float diffX = centerX - _padre.mPosX;
                    float diffY = centerY - _padre.mPosY;
                    // 3 Scaling difference
                    diffX = diffX * scale - diffX;
                    diffY = diffY * scale - diffY;
                    // 4 Updating image origin
                    _padre.mPosX -= diffX;
                    _padre.mPosY -= diffY;
                }

                _padre.Invalidate();
                _padre.RequestLayout();

                return(true);
            }
コード例 #2
0
            public override bool OnDoubleTap(MotionEvent e)
            {
                //string a;

                _padre.mPosX = e.GetX() * -1;
                _padre.mPosY = e.GetY() * -1;

                /*mFocusX = e.GetX();
                *  mFocusY = e.GetY();*/

                if (_padre.mScaleFactor > _padre.MIN_ZOOM)
                {
                    _padre.mScaleFactor = _padre.MIN_ZOOM;
                }
                else
                {
                    _padre.mScaleFactor = _padre.MAX_ZOOM;
                }

                _padre.Invalidate();
                _padre.RequestLayout();

                return(true);
            }