2016-07-30 13 views
1

は、これが成功した左上隅からズーム私のコードのイムですが、私はどのようにして中心点から画像を拡大できますか?

@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; 
} 
を画像の中心から拡大したいとimage.Iのサイズを大きくしたい、それを通じてnow.Helpまで私をこのコードを試してみましたしてください
+0

にこれを分割する私の解決策を持って、[この](http://pastebin.com/JkMLHq5eは)あなたが必要とするすべては 'postScale'の2つの最後のパラメータを変更することがいかに、ある – pskink

+0

修正する方法を変更してください –

+0

いいえ、これはあなたの宿題です – pskink

答えて

1

私は2

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

ズームインされている画像の「​​fromXDelta」と「fromYDelta」の値を何らかの方法でコーディングすることができれば、それらを試してみてください。値はそれぞれ50%です。

+0

基本的に、実行時にスクリーンショットを取得してからズームを適用しますその上でズームインのためにコードmを貼り付けていますが、画像の中心点を取るためにどこを変えなければならないのか分かりません –

関連する問題