在android中更改图像形状

我成功地实现了一个捏放大/缩小和在canvas上的图像拖放function。

现在我想要的是重新resize,像下面的图像链接基于iPhone应用程序 在这里输入图像说明

如何使用iPhone SDK更改图像的形状?

那么我怎样才能在Android中实现这种function呢?

Solutions Collecting From Web of "在android中更改图像形状"

基本上你需要使图像失效并从头开始在canvas上重新绘制::

img=(ImageView)findViewById(R.id.yourimageidfromxml); img.onTouchEvent(MotionEvent me) { int X=me.getX(); int Y=me.getY(); img.invalidate(); img.repaint(X,Y); } void paint(int X,int Y) { img.setWidth(X); img.setHeight(Y); } 

缩放图像将从一开始就使用canvas上的重绘进行转换

如果通过重新resize ,则指的是在“垂直”和“水平”平面上“拉伸”位图,然后只需修改形状(例如,椭圆形)被绘制到的矩形。

例如:

这是你椭圆形的原始形状:

 canvas.drawOval(new Rect(0,0,100,100), bluePaint); 

这是相同的椭圆形,只是在水平面上拉伸(resize):

 canvas.drawOval(new Rect(0,0,200,100), bluePaint); 

我希望这有帮助。

有两个选项,都涉及自定义视图。 首先是创build一个自定义的视图,填充你的“canvas”。 您可以在视图中跟踪8个蓝色和1个绿色圆圈作为Rect对象。 重写onTouchEvent(MotionEvent) ,然后检查运动事件是否在你的任何控件,并相应地更新它们(我在这里简化了一些:))。 从你的onTouchEvent你会调用invalidate() 。 然后,您可以使用onDraw(Canvas)来处理绘制控件的操作,并根据自上次调用onDraw以来控件的变化来更新图像。

另一个select是做类似的事情,但是只能封装圆和控件,这意味着移动视图需要一个容器,让视图改变它的布局参数。 这样做,你的onTouchEvent方法需要触发一个无效的布局视图,因为它需要重新计算视图的大小和位置。 这肯定会更困难,但取决于你想要实现个人视图的工作可能比在单一视图中维护代码圈子的表示更好。

图像大小的调整可以通过使用scaleType为“fitXY”的简单ImageView来实现。

你必须自己添加蓝色的大小调整手柄。

改变图像的旋转(绿色手柄)可以通过使用:

 public static Bitmap rotate(Bitmap src, float degree) { // create new matrix Matrix matrix = new Matrix(); // setup rotation degree matrix.postRotate(degree); // return new bitmap rotated using matrix return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); } 

资料来源: http : //xjaphx.wordpress.com/2011/06/22/image-processing-rotate-image-on-the-fly/

有关更多Androidimage processing示例,请参阅http://xjaphx.wordpress.com/learning/tutorials/