我正在编写一个Android应用程序。通过使用它,用户可以裁剪位图图像。但是我想添加更多功能,即在裁剪之前旋转图像。 我按照以下步骤来完成此目的。
BitmapDrawable()
和裁剪矩形(Rect()
)[矩形确定位图中的警察位置] onTouch(MotionEvent)
方法
覆盖onDraw(Canvas)
方法来更新屏幕。此代码用于显示位图。
bitmap_drawable.draw(canvas,_bitmap_paint);
这一步,我不知道该怎么办,是显示正确的旋转。我使用此代码在onDraw(Canvas)
方法中旋转画布。
canvas.rotate(_angle);
但它会使屏幕上的所有内容(包括裁剪矩形)旋转。
初始化我自己的Canvas()
对象以绘制位图是一种明智的方法吗?
这里,我想要的旋转,非常精确到1度,并且由双指旋转手势执行,因此性能非常重要,并且下面的代码(使用矩阵)是坏的。
Matrix mat = new Matrix();
mat.preRotate(_degree, _one_finger_x, _one_finger_y);
Bitmap _new_bitmap = Bitmap.createBitmap(_old_bitmap, 0, 0, bmWidth, bmHeight, mat, true);
因此,我认为初始化单独的Canvas()
并使用canvas.rotate(_degree)
是非常合适的。但是,这使得控制触摸事件非常困难。任何想法?请帮助。
假设我现在可以将位图与所有对象分开旋转,即。裁剪矩形等。这一步是裁剪位图并有效地向用户显示裁剪结果。当不包括旋转功能时,我只需复制旧位图上裁剪矩形内的颜色字节,如下所示。
Bitmap _new_bitmap = Bitmap.createBitmap( _old_bitmap, _cropRectx, _cropRecty, _cropRectWidth, _cropRectHeight, null);
但是,在这里,从旋转的位图,我如何通过交叉裁剪矩形克隆颜色字节?
如何裁剪旋转的位图?