【问题标题】:change image shape in android在android中更改图像形状
【发布时间】:2012-09-05 09:50:07
【问题描述】:

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

现在我想要的是重新调整大小,如下图所示链接基于 iPhone App

How to change shape of an image using iPhone SDK?

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

【问题讨论】:

  • 不知道为什么在发布后的一分钟内它被评为 +4。支持者能否解释是什么让这个问题如此精彩?不管怎样,你尝试过什么?
  • code.google.com/p/android-multitouch-controller/source/browse/… 使用这个链接我已经成功地在画布中捏合/拉出图像。
  • @xitij 我也在寻找这种问题.....如果我绕过它......我一定会通知你.....

标签: android image android-canvas android-image


【解决方案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);
}

缩放图像将从头开始在画布上使用重绘进行变换

【讨论】:

    【解决方案2】:

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

    例如:

    这是你原来的椭圆形状:

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

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

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

    我希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        图像的大小调整可以通过使用 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/

        【讨论】:

          猜你喜欢
          • 2016-11-26
          • 1970-01-01
          • 1970-01-01
          • 2020-02-19
          • 1970-01-01
          • 2020-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多