1

私の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());

ボックスは別のポイントに変換されることもあります。何か案は?必要に応じて、さらにソース コードを投稿することもできます。

4

0 に答える 0