我有一些带有文字的textview。 Textview具有触摸事件,因此用户可以旋转,缩放和翻译文本。用于翻译,旋转 并缩放我正在使用画布。 Canvas在onDraw()函数中执行此操作。现在我希望在缩放或旋转时有文本的外部边界,任何人都可以帮助我。 在此先感谢。
我尝试使用这段代码在画布上翻译,旋转和缩放文字:
canvas.scale(fScaledFactorForTextview,fScaledFactorForTextview,getTextWidth() / (2.0f * getLineCount()) + fTranslationX, (getTextSize() * getLineCount()) / 2.0f + fTranslationY);
canvas.rotate(fDegrees, getTextWidth() / (2.0f * getLineCount()) + fTranslationX, (getTextSize() * getLineCount()) / 2.0f + fTranslationY);
canvas.translate(fTranslationX,fTranslationY);
答案 0 :(得分:2)
一般来说,如果你使用矩阵,而不是像这样直接旋转和缩放调用,这样做会更容易。如果使用矩阵,则可以将相同的调整应用于矩阵。然后,您可以通过将坐标乘以该矩阵,轻松地将任何点从正常的Cartesion坐标转换为更改的坐标。 Matrix甚至提供mapPoints函数来做到这一点。