在 Gosu 中居中文本

Pri*_*ock 5 ruby libgosu

我一直无法将 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 
Run Code Online (Sandbox Code Playgroud)


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

在此处输入图片说明

然而,水平是一个不同的故事......它似乎是在文本的左上角并将其居中,而不是文本的中间。

在此处输入图片说明

有人有这个公式吗?我尝试了很多东西,但只差一点。

ton*_*edz 4

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
Run Code Online (Sandbox Code Playgroud)

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

据我所知,该类有一个方法可以让您将图像的旋转中心对齐到指定点,draw_rot

一旦找到框架的中心,使用draw_rot代替应该对您有用。draw