私のAndroidアプリは、次のように複数の円を描くことができます:
ユーザーは、円をドラッグして拡大縮小することもできます。スケーリングに関しては、次を使用しました。
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());
ボックスは別のポイントに変換されることもあります。何か案は?必要に応じて、さらにソース コードを投稿することもできます。