如何在pyglet中用像素高度而非点来渲染文本?
Pyglet 似乎只使用点(points)作为单位。有没有简单的方法可以转换一下?这肯定有个简单的办法,因为能够用像素来表示文本高度是非常重要的。
class Font():
def __init__(self,font,size):
self.size = size
self.font = font
def return_surface(self,label):
surface = Surface((label.content_width,label.content_height))
surface.set_background_alpha(0)
setup_framebuffer(surface,True)
label.draw()
end_framebuffer()
return surface
def render(self,text,colour):
colour = fix_colour(colour)
label = pyglet.text.Label(text,font_name=self.font,font_size=self.size,color = colour,dpi=72)
return self.return_surface(label)
def render_wordwrap(self,text,width,colour,alignment):
if alignment == 0:
alignment = 'left'
elif alignment == 1:
alignment = 'center'
else:
alignment = 'right'
colour = fix_colour(colour)
label = pyglet.text.Label(text,font_name=self.font,font_size=self.size,color = colour,width=width,halign=alignment, multiline=True,dpi=72)
return self.return_surface(label)
1 个回答
0
某个字号占据的像素数量取决于你屏幕的DPI(每英寸点数)。举个例子,“14pt”表示覆盖14个点的距离,在默认的DPI为96的情况下,大约是18个像素。
这个 网站 对如何将字号转换为像素有很好的解释。