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