如何从中心点放大图像?

时间:2016-07-30 09:33:11

标签: android zoom

这是我的代码,我从左上角成功缩放,但我想从图像的中心放大,想要增加图像的大小。我试过这段代码到现在为止。请帮助我通过它

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

2 个答案:

答案 0 :(得分:0)

如果您可以编写" fromXDelta"和#34;来自Yelta"正在以某种方式缩放的图像的值,尝试一下。价值分别为50%。

答案 1 :(得分:0)

我得到了我的解决方案,将其分为2

orig_x = event.getX()/2;
orig_y = event.getY()/2;
相关问题