我想在ACTION_MOVE android上缩放位图

时间:2011-12-24 06:50:42

标签: android bitmap action android-canvas

我希望缩放ACTION_MOVE触摸事件的视图。when i drag orange square image according to that red ball should be resized. red bal resized from its center point to center of orange square image o output of image like this

所有位图都是方格式。 (point1 = top + left,point2 = top + right,point3 = bottom + left,point4 = bottom + right) 我得到了全部四分。 当我将黄色夹子拖到位图顶部时,红色球根据它调整大小(夹子可以向任何方向移动)。

我的问题: - >我应该如何根据位图计算夹具中心点和位图(左+顶)点1的距离和比例。

表示如果我从顶部+左上角拖动位图,则它仅从point1,point2,point4缩放/调整大小(底部+右角在其位置重新发送邮件)。

- >我使用画布来绘制位图,是否正确处理位图缩放/旋转?

1 个答案:

答案 0 :(得分:2)

您可以获取ACTION_DOWN事件的x,y坐标和ACTION_UP上的x',y'坐标。通过这两点,您可以制定测量值(例如,欧几里德距离)。

gripper.setOnTouchListener(new OnTouchListener(){
    public boolean onTouch(View v, MotionEvent event) {

        if(event.getAction() == android.view.MotionEvent.ACTION_DOWN){
            x1 = event.getX();
            y1 = event.getY();
        }
        else if(event.getAction() == android.view.MotionEvent.ACTION_UP){
            x2 = event.getX();
            y2 = event.getY();
        }               
        return false;
    }           
});

您还可以使用getLeft()getTop()方法获取位图的左上角位置(但请注意,这些方法返回相对于View的父布局的位置)。

createBitmap方法上有一个Matrix参数,允许您调整Bitmap的大小,因此您可以使用所需的分辨率存储它。看看here如何(顺便说一下,这是一个很好的教程)。您可能已经知道如何做到这一点,但无论如何我认为没有问题= P。

希望有所帮助