以 Svg 形状写入缩放文本

我正在尝试为 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 包的 Path 对象不提供任何方法来找到形状的真实中心。


慕丝7291255
浏览 131回答 1
1回答

aluckdog

您需要将 SVG 元素嵌套在具有固定纵横比的 SVG 容器中。然后,您可以根据根容器 SVG 的固定纵横比为 HTML 文本或 SVG 文本建立字体大小。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java