ruby – 在Gosu中心文本

我一直无法将Gosu库中的文本居中放到屏幕的中间位置.

require 'gosu'

class GameWindow < Gosu::Window
  def initialize (width=800, height=600, fullscreen=false)
    super
    self.caption = 'Hello'
    @message = Gosu::Image.from_text(
        self, 'HELLO WORLD', Gosu.default_font_name, 45)
  end

  def draw
    @message.draw(377.5,277.5,0)
  end
end

window = GameWindow.new
window.show 

我的第一种方法是取屏幕的高度,用文本45的高度减去它,然后除以2.现在,这在垂直对齐时似乎有效.

《ruby – 在Gosu中心文本》

然而,水平是一个不同的故事……似乎
采取文本的左上角,并将其置于我期望它做的中心,而不是文本的中间.

《ruby – 在Gosu中心文本》

有人为此得到了一个公式吗?我尝试了很多东西,只是接近了.

最佳答案

class GameWindow < Gosu::Window
  def initialize (width=800, height=600, fullscreen=false)
    super
    self.caption = 'Hello'
    @message = Gosu::Image.from_text(
        self, 'HELLO WORLD', Gosu.default_font_name, 45)
  end

  def draw
    @message.draw(377.5,277.5,0)
  end
end

你的@message是Gosu :: Image的一个实例

据我所知,该类有一个方法,允许您将图像的旋转中心与指定点对齐,draw_rot

一旦找到框架的中心,使用draw_rot而不是绘图应该适合您.

点赞