كيف أقوم بإعداد نص مع ارتفاع بكسل بدلاً من النقاط في بيلت؟
سؤال
يبدو أن 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 بكسل.
هذه موقع إعطاء شرح جيد لتحويل أحجام النقاط إلى وحدات البكسل.
لا تنتمي إلى StackOverflow