Prawn有height_of_formatted
方法确定格式化文本的高度,因此当需要将其中间垂直对齐到某个锚点时,可以计算其左上角坐标。
但是没有width_of_formatted
方法。
我正在绘制图形,我需要将文本(点标签)置于某个点(点本身)的正中方。所以我知道文本的中间部分有点的x坐标。
如何获取文本开头的x坐标(我可以将其提供给draw_text
和其他渲染方法)?
答案 0 :(得分:2)
如果您使用bounding_box
而不是draw_text
,则可以指定文本边界框的宽度。然后,如果您居中对齐文本,您应该能够指定中间的精确x坐标。 (它是盒子的x位置加上宽度的一半)
我们假设您在x坐标72处有一个点,并且您想要标记" hello world!"所以这个词的中心是相同的x坐标。你不知道"你好"是的,但你确定它适合宽度为500的盒子。
72 - (500/2)= -178
bounding_box([-178, 100], :width => 500) do
text "hello world!", align => :center
end