2011-12-24 60 views
1

我想缩放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 ooutput of image like this我想在ACTION_MOVE上缩放位图android

所有的位图都是方形格式。 (point1 = top + left,point2 = top + right,point3 = bottom + left,point4 = bottom + right) 我得到了全部四点。 当我拖动位图顶部的黄色抓手时,红色的球根据那个调整大小(抓手可以在任何方向移动)。

我的问题: - >我应该如何计算夹点中心点和位图(左+顶)point1的距离并根据位图进行缩放。

意思是说,如果我从顶部+左边角拖动位图,那么它只从点1,点2,点4(底部+右边角落重新放置在其位置)缩放/调整大小。

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

回答

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()方法(但要注意的是,这些方法返回相对于视图的父布局的位置)。

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

希望它能帮助

+0

感谢replying.createBitmap java.lang.IllegalArgumentException异常:X +宽度必须<= bitmap.width()例外,我已经使用createScaledBitmap功能及它工作正常,但问题是当我比例(重新调整大小)的圆形位图,它会缩放为圆弧形的位图。任何溶胶。 ? –

+0

这是I HV使用什么为u说:位图scaledBitmap = Bitmap.createBitmap(B,的getX(),的getY(), // \t \t \t \t \t宽度,高度,矩阵,TRUE); getX()和getY()是我当前在画布上的位图位置。抱歉的评论格式。 –

+0

看来你的代码有错误。看看我再次发布的链接。你应该做“位图resizedBitmap = Bitmap.createBitmap(bitmapOrg,0,0,bitmapOrg.width(),bitmapOrg.height,matrix,true);”总是...“矩阵”参数是保存实际所需比例的参数,例如“matrix.postScale((((float)newWidth)/ width),(((float)newHeight)/ height))”。注释格式对于解释=/...没有多大帮助,所以请花时间在我发布的链接上,并仅使用Matrix的参数,以便调整大小。 – Alesqui