我一直无法将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.现在,这在垂直对齐时似乎有效.
然而,水平是一个不同的故事……似乎
采取文本的左上角,并将其置于我期望它做的中心,而不是文本的中间.
有人为此得到了一个公式吗?我尝试了很多东西,只是接近了.
最佳答案
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而不是绘图应该适合您.