缩放Canvas后的值
canvas.getClipBounds().left 始终为 0
canvas.getClipBounds().top 始终为 0
这些值在缩放时不会改变。是否有任何错误的实现?
Rect clipBounds = new Rect();
int canvasLeft;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
clipBounds = canvas.getClipBounds();
canvas.save();
canvasLeft = canvas.getClipBounds().left;
if(scaleGestureDetector.isInProgress()){
scaleGestureFocusX = this.scaleGestureDetector.getFocusX();
scaleGestureFocusY = this.scaleGestureDetector.getFocusY();
canvas.scale(this.scaleFactor, this.scaleFactor, scaleGestureFocusX, scaleGestureFocusY);
}
else{
canvas.scale(this.scaleFactor, this.scaleFactor, scaleGestureFocusX, scaleGestureFocusY);
}
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.drawPath(path, paint);
canvas.restore();
}
最佳答案
您在canvas.save()之后调用canvas.getClipBounds().left。这就是为什么每次它返回 0 的原因是新生成的 Canvas 剪辑绑定(bind)始终为 0。
解决方案:先调用canvas.getClipBounds().left,然后调用canvas.save()。
关于android - 在android中缩放 Canvas 时canvas.getClipBounds().left始终为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370475/