10

我成功地在画布上的图像中实现了捏放大/缩小和拖放功能。

现在我想要的是重新调整大小,如下图所示链接基于 iPhone 应用程序在此处输入图像描述

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

那么如何在 Android 中实现这种功能呢?

4

4 回答 4

1

如果通过重新调整大小您指的是在垂直和水平平面上“拉伸”位图,那么您只需修改正在绘制形状(例如椭圆形)的矩形。

例如:

这是椭圆的原始形状:

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

这是同一个椭圆,只是在水平面上拉伸(调整大小):

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

我希望这有帮助。

于 2013-01-16T07:58:56.260 回答
1

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

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

缩放图像将从一开始就在画布上使用重绘进行转换

于 2012-12-29T14:45:41.700 回答
0

可以通过使用带有 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/

有关更多 Android 图像处理示例,请参阅http://xjaphx.wordpress.com/learning/tutorials/

于 2013-01-16T07:20:26.493 回答
0

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

另一种选择是做类似的事情,但视图只封装了圆圈和控件,这意味着移动视图需要一个容器来让视图改变它的布局参数。这样做,您的 onTouchEvent 方法将需要触发该布局视图的无效,因为它需要重新计算视图的大小和位置。这肯定会更难,但取决于您尝试实现的目标,使用单个视图可能比在单个视图中维护代码中的圆圈表示更好。

于 2012-09-06T02:26:10.803 回答