2016-07-30 2 views
1

это мой код им успешно масштабировании от верхнего левого угла, но я хочу, чтобы увеличить от центра изображений и хочу увеличить размер image.I попробовал этот код до now.Help меня через него, пожалуйстаКак я могу увеличить изображение из его центральной точки?

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
    //Log.e(Codistan_Tag, "Touch Event: " +MotionEvent.actionToString(event.getAction())); 
    if(isImageReady) { 

     if(isSelectionDragEnabled) 
      mPanListener.onTouchEvent(event); 

     if (isZoomEnabled) { 
      if(event.getAction() == MotionEvent.ACTION_DOWN){ 
       anchor_scale = mScaleFactor; 
      } 
      mScaleDetector.onTouchEvent(event); 
      mPanListener.onTouchEvent(event); 
     } else { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_POINTER_3_DOWN: 
        break; 
       case MotionEvent.ACTION_POINTER_2_DOWN: 
        break; 
       case MotionEvent.ACTION_POINTER_1_UP: 

        break; 
       case MotionEvent.ACTION_DOWN: 

        if (isSelectionToolEnabled) 
         isDrawFinished = false; 

        orig_x = event.getX(); 
        orig_y = event.getY(); 

        //Log.e(Codistan_Tag, "-------ORIGIN-------s: " + String.valueOf(orig_x) + " " + String.valueOf(orig_y)); 

        orig_x = (orig_x - dest.left); 
        orig_y = (orig_y - dest.top); 

        if(java.lang.Math.round(mScaleFactor) > 2) { 
         orig_x += (scale_cur_x * (riz_scale)); 
         orig_y += (scale_cur_y * (riz_scale)); 
        } else { 
         orig_x += (scale_cur_x); 
         orig_y += (scale_cur_y); 
        } 

        orig_x /= java.lang.Math.round(mScaleFactor); 
        orig_y /= java.lang.Math.round(mScaleFactor); 

        orig_x *= scale; 
        orig_y *= scale; 

        //mSelectionTaskManager.setOrigin((int) orig_x, (int) orig_y); 
        if(isSelectionToolEnabled) 
         MovementStack.add(new Pair((int)orig_x, (int)orig_y)); 

        Log.e(Codistan_Tag, "Codistan Origins: " + String.valueOf(orig_x) + ", " + String.valueOf(orig_y)); 

        break; 
       case MotionEvent.ACTION_MOVE: 
        max_dist = dist * scale; 
        if (event.getAction() != 1) { 
         move_x = event.getX(); 
         move_y = event.getY(); 

         //Log.e(Codistan_Tag, "Move: " + String.valueOf(move_x) + ", " + String.valueOf(move_y)); 

         move_x = (move_x - dest.left); 
         move_y = (move_y - dest.top); 



         if(java.lang.Math.round(mScaleFactor) > 2) { 
          move_x += (scale_cur_x * riz_scale); 
          move_y += (scale_cur_y * riz_scale); 
         } else { 
          move_x += (scale_cur_x); 
          move_y += (scale_cur_y); 
         } 

         move_x /= java.lang.Math.round(mScaleFactor); 
         move_y /= java.lang.Math.round(mScaleFactor); 

         move_x *= scale; 
         move_y *= scale; 

         //Log.e(Codistan_Tag, "Codistan Move: " + String.valueOf(move_x) + ", " + String.valueOf(move_y)); 

         if (move_x >= 0 && move_y >= 0) { 
          if (!isSelectionToolEnabled && isDistortionEnabled) { 
           warpPhotoFromC(image, height, width, max_dist/mScaleFactor, orig_x, orig_y, move_x, move_y); 
           first++; 
           distortedBmp.setPixels(image, 0, width, 0, 0, width, height); 
           fg = false; 
          } else { 
           //Cut Tool Enabled 
           distortedBmp.setPixels(image, 0, width, 0, 0, width, height); 
           MovementStack.add(new Pair((int) move_x, (int) move_y)); 
          } 
         } 
        } 
        orig_x = move_x; 
        orig_y = move_y; 
        break; 
       case MotionEvent.ACTION_UP: 
        if (isSelectionToolEnabled) 
         isDrawFinished = true; 
        break; 
      } 
     } 
     v.invalidate(); 
    } 
    return true; 
} 
+0

[это] (http://pastebin.com/JkMLHq5e) является, как все, что вам нужно изменить '2 последних параметры postScale' в – pskink

+0

Измените, пожалуйста, объясните, –

+0

нет, это ваша домашняя работа – pskink

ответ

1

Я получил мое решение, разделяющее это 2

orig_x = event.getX()/2; 
orig_y = event.getY()/2; 
0

Если вы можете указать значения «fromXDelta» и «fromYDelta» изображения, которое каким-то образом увеличилось в вашем коде, попробуйте. Значение равно 50%.

+0

в основном m, чтобы получить снимок экрана во время выполнения, а затем применить масштабирование в нем я вставил код m, используя для увеличения, не знаю, где я должен измениться, чтобы взять центральную точку изображения –