我一直无法将 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。现在这似乎在垂直对齐时起作用。
然而,水平是一个不同的故事......它似乎是在文本的左上角并将其居中,而不是文本的中间。
有人有这个公式吗?我尝试了很多东西,但只差一点。
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