2016-07-30 19 views
1

dies ist mein Code im erfolgreich von links oben zoomen, aber ich möchte in der Mitte des Bildes vergrößern und will eine Größe von image.I versucht, mir diesen Code bis now.Help durch sie bitteWie kann ich Bild von seinem Mittelpunkt vergrößern?

@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; 
} 
erhöhen
+0

[diese] (http://pastebin.com/JkMLHq5e) Aufteilen ist, wie alles, was Sie brauchen, ist ' – pskink

+0

postScale' die 2 letzten Parameter zu ändern Ändern, wie bitte erklären –

+0

Nein, das ist Ihre Hausaufgaben – pskink

Antwort

1

bekam ich meine Lösung, dies zu 2

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

Wenn Sie die Werte "fromXDelta" und "fromYDelta" des Bildes, das gezoomt werden soll, codieren können, probieren Sie es aus. Der Wert ist jeweils 50%.

+0

im Grunde genommen bekomme ich den Screenshot zur Laufzeit und dann Zoom anwenden Ich habe den Code m eingefügt, um zu zoomen. Ich weiß nicht, wo ich den Mittelpunkt des Bildes ändern soll –