【发布时间】:2012-12-01 14:47:36
【问题描述】:
我试图让用户触摸图像,然后基本上会显示一个圆形放大镜,这将允许用户更好地选择图像上的某个区域。当用户释放触摸时,放大的部分将消失。这用于几个照片编辑应用程序,我正在尝试实现我自己的版本。我下面的代码确实放大了图像视图的圆形部分,但一旦我松开手指,就不会删除或清除缩放。我目前使用canvas = new Canvas(bitMap); 将位图设置到画布,然后使用takenPhoto.setImageBitmap(bitMap); 设置图像视图我不确定我是否以正确的方式进行操作。 onTouch 代码如下:
zoomPos = new PointF(0,0);
takenPhoto.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
zoomPos.x = event.getX();
zoomPos.y = event.getY();
matrix.reset();
matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
shader.setLocalMatrix(matrix);
canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
takenPhoto.invalidate();
break;
case MotionEvent.ACTION_MOVE:
zoomPos.x = event.getX();
zoomPos.y = event.getY();
matrix.reset();
matrix.postScale(2f, 2f, zoomPos.x, zoomPos.y);
canvas.drawCircle(zoomPos.x, zoomPos.y, 20, shaderPaint);
takenPhoto.invalidate();
break;
case MotionEvent.ACTION_UP:
//clear zoom here?
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
});
【问题讨论】:
-
我不知道我是否理解正确,但是您是在问如何清除图像上的缩放效果?为什么不将原始图像保存在单独的位图中。当用户使用缩放并且是时候摆脱放大镜效果时,使用原始位图并在画布上重新绘制它,从而使用缩放擦除图像。
-
不,我没有在图像视图上看到放大圈。您能否分享更多内容或代码在哪里工作?
-
我还需要在画廊中心的透明覆盖框架中缩放图像,因此无论图像通过哪个被缩放,请建议
标签: android android-canvas android-imageview touch-event zooming