我目前正在使用多点裁剪工具,而且我一直在卡住几天。所以基本上,这是这样的:重新缩放位图的缩放视图
1)取大分辨率的照片与设备的摄像头
2)使用自定义类(它扩展了ImageView的)
3把生成位图在屏幕上)拉拢处理程序检测到的轮廓 - 这些轮廓稍后用于裁剪大位图。
我想拖动角落处理程序时,允许从用户更好的调整,以实现一个圆形变焦。这是我到目前为止已经完成:在画布上
@Override
public void setImageBitmap(Bitmap bm) {
originalBitmap = bm.copy(Bitmap.Config.ARGB_8888, true);
shaderPaint = new Paint();
shader = new BitmapShader(originalBitmap, TileMode.CLAMP, TileMode.CLAMP);
shaderPaint.setShader(shader);
shaderMatrix = new Matrix();
....
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
.......
if (zooming) {
shaderMatrix.reset();
inverseMatrix.reset();
if (getImageMatrix().invert(inverseMatrix)) {
float[] pts = new float[2];
pts[0] = currentMovedPoint.x;
pts[1] = currentMovedPoint.y;
inverseMatrix.mapPoints(pts);
shaderMatrix.postTranslate(-pts[0], -pts[1]);
shaderMatrix.postScale(2f, 2f);
shader.setLocalMatrix(shaderMatrix);
canvas.drawCircle(zoomCenterX, zoomCenterY, zoomRadius, shaderPaint);
canvas.drawLine(zoomCenterX - 20, zoomCenterY, zoomCenterX + 20, zoomCenterY, borderPaint);
canvas.drawLine(zoomCenterX, zoomCenterY - 20, zoomCenterX, zoomCenterY + 20, borderPaint);
}
}
zoomCenterX和zoomCenterY是固定的点。问题是缩放视图不是以currentMovedPoint坐标为中心(它正好被zoomCenterX,zoomCenterY所偏移)。如果我将zoomCenterX和zoomCenterY设置为0,则缩放视图正确居中 - 但由于屏幕上只出现了四分之一的缩放圈,因此我无法使用它。
我试着通过zoomCenterX和zoomCenterY没有成功地转换shaderMatrix(缩放视图仍然不居中当前选定的点)。
我是以这种错误的方式行事还是有我失踪的事?