Prawn:将文本中间锚定到给定点

Eug*_*Zol 5 ruby ruby-on-rails prawn

Prawn有height_of_formatted方法来确定格式化文本的高度,因此当需要将其中间垂直对齐到某个锚点时,可以计算其左上角坐标.

但是没有width_of_formatted办法.

我正在绘制图形,我需要将文本(点标签)置于某个点(点本身)的正中方.所以我知道文本的中间部分有点的x坐标.

如何获得文本开头的x坐标(所以我可以提供它draw_text和其他渲染方法)?

Tob*_*obi 2

如果您使用bounding_box而不是draw_text可以指定文本边框的宽度。然后,如果您将文本居中对齐,您应该能够指定中间的确切 x 坐标。(它是盒子的 x 位置加上宽度的一半)

假设您在 x 坐标 72 处有一个点,并且想要添加标签“hello world!” 所以单词的中心是相同的 x 坐标。您不知道“hello”这个词有多宽,但您确定它可以放入宽度为 500 的盒子中。

72 - (500/2) = -178

bounding_box([-178, 100], :width => 500) do
  text "hello world!", align => :center
end
Run Code Online (Sandbox Code Playgroud)