android - 在android中缩放 Canvas 时canvas.getClipBounds().left始终为0

标签 android canvas

缩放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/

相关文章:

android - 无法使用退格键删除 editText 中的内容?

android - 使标题(工具栏)在android中固定

javascript - 如何处理 javascript 中的 Canvas 不可用?

javascript - 将canvas中的文字绘制成三个js作为sprite

javascript - .htaccess 规则使 sm2 无法在 Android 和 iPad 上加载我网站的 mp3

java - 向 GCM 服务器发送消息(使用 Java)时出现异常 [errorCode=MismatchSenderId]

java - 安卓到 PHP : epipe Broken Pipe/stream closed posting chunked multipart form-data using httpurlconnection

android - 如何在 OnTounchEvent 中旋转、缩放和平移 Canvas 上的位图

javascript - Fabric.js 上克隆的图像尺寸与原始图像尺寸不一致

javascript - 使用 Canvas 和环画一朵花