我的 Android Applikation 可以像这样绘制多个圆圈:
用户还可以拖动圆圈并对其进行缩放。当涉及到缩放时,我使用了:
canvas.save();
canvas.scale(this.scaleFactor, this.scaleFactor, this.centerX, this.centerY);
// draw main circle
canvas.drawCircle(this.centerX, this.centerY, this.radius, this.outerCirclePaint);
...
一切都很好,除了圆圈周围每个文本的边界框。每个文本都应该是可触摸的(而不是在 canvas.scale 之后)。所以我也尝试用不同的方法和不同的结果来缩放边界框。当我只是将框的左、上、右、下相乘时,只有当圆心在 0,0 时,文本才可触摸。所以我不知道为什么它被翻译成0,0。
txtBounds.set(txtBounds.left * this.scaleFactor, txtBounds.top * this.scaleFactor, txtBounds.right * this.scaleFactor, txtBounds.bottom * this.scaleFactor);
当我使用矩阵来缩放盒子时,盒子似乎没问题,但它不再可触摸
matrixBounds.setScale(this.scaleFactor, this.scaleFactor, txtBounds.centerX(), txtBounds.centerY());
该框也可能被翻译到另一个点。有任何想法吗?如果需要,我还可以发布更多源代码。