【问题标题】:How do I render text with pixel heights rather than points in pyglet?如何使用像素高度而不是 pyglet 中的点来渲染文本?
【发布时间】:2011-01-31 09:40:26
【问题描述】:

Pyglet 似乎只使用积分。有什么方法可以轻松转换吗?当然必须有一种简单的方法,因为它显然很重要,能够使用像素作为文本高度。

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)

【问题讨论】:

    标签: python text fonts label pyglet


    【解决方案1】:

    特定点大小占用的像素数取决于您的屏幕 DPI。 例如,“14pt”是覆盖 14 个点的距离,默认 DPI 为 96 时约为 18 个像素。

    site 很好地解释了将点大小转换为像素。

    【讨论】:

    • 感谢您的回答。我尝试使用 72 作为 dpi 来抵消 ppi 或任何像素与点相同的东西。出于某种原因,文本显示的比应有的小得多。我将添加我制作的课程...
    • 在 Pyglet 站点上找到了一些可能对您有用的更多信息。 pyglet.org/doc/programming_guide/font_sizes.html
    • 非常感谢。不幸的是,pyglet 似乎对文本使用了完全错误的像素大小,我将提出一个与此问题相关的新问题。但这是很好的信息。
    猜你喜欢
    • 2016-04-23
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2021-12-09
    相关资源
    最近更新 更多