كيف أقوم بإعداد نص مع ارتفاع بكسل بدلاً من النقاط في بيلت؟

StackOverflow https://stackoverflow.com/questions/2510278

سؤال

يبدو أن 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)
هل كانت مفيدة؟

المحلول

يعتمد عدد وحدات البكسل التي يتم تناولها بحجم نقطة معين على شاشاتك DPI. على سبيل المثال ، "14pt" هي المسافة التي تغطي 14 نقطة ، والتي في DPI الافتراضي من 96 حوالي 18 بكسل.

هذه موقع إعطاء شرح جيد لتحويل أحجام النقاط إلى وحدات البكسل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top