以Svg形状书写缩放后的文本

时间:2019-07-10 15:39:38

标签: java android svg kotlin

我正在尝试在Android上为每个Svg形状绘制带有位置编号的缩放文本。

类似这样的事情: http://static-4.app4smart.me/uploads/posts/thumbs/13284/f-9553-1971d66549.jpg

有人知道如何实现它吗? 主要问题是要找到更好的放置文字的形状,并根据svg形状的大小进行缩放。

实际上,我想出了如何放置和缩放文本,如下例所示:

<svg x="0px" y="0px"
 viewBox="0 0 800 800" style="enable-background:new 0 0 800 
800;" xml:space="preserve">
<polygon style="fill:#E2BE9C;" points="509.8,704.8 517.4,799.3 
436.4,799.3 399.5,757.9 409.6,661.6 440,620.3 "/>
<text xmlns="http://www.w3.org/2000/svg" x="458" y="709" text- 
anchor="middle" textLength="20" lengthAdjust="spacingAndGlyphs" 
font- 
size="10">Hey!</text>
</svg>

在这里,我仅获得Path对象的RectF并获得放置文本的确切中心。 但是我仍然找不到更好的放置文本的地方以及必须缩放的大小。

由于这种形状,因此无法应用此方法。

 <svg x="0px" y="0px"
         viewBox="0 0 800 800" style="enable-background:new 0 0 800 
    800;" xml:space="preserve">
    <polygon style="fill:#58585A;" points="201.7,175.9 294.4,146.9 
    414.9,170.2 252.5,191.4 159.6,231.3 110.1,263.9 127.4,226 "/>
    </svg>

对于元素来说,这种方法也不是很好。 看来我必须在svg形状内找到最大的矩形,并在此矩形内放置我的文本,并按比例缩放到矩形尺寸。 知道怎么做吗?

android.graphics包中的路径对象未提供任何找到形状真实中心的方法。

1 个答案:

答案 0 :(得分:1)

您需要以固定的长宽比将SVG元素嵌套在SVG容器中。然后,您可以根据根容器SVG的固定长宽比,为HTML文本或SVG文本建立字体大小。