2010-03-24 72 views
0

Pyglet似乎只使用點。有沒有辦法輕鬆轉換?當然,必須有一個簡單的方法,因爲它是顯而易見的重要事情,能夠將像素用於文本高度。如何使用像素高度渲染文本而不是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) 

回答

0

特定點大小佔用的像素數量將取決於您的屏幕DPI。 例如,「14pt」是覆蓋14個點的距離,其在默認DPI爲96時是大約18個像素。

這個site給出了將點大小轉換爲像素的很好的解釋。

+0

謝謝你的回答。我已經嘗試使用72的DPI取消了PPI或任何像素是相同的點。 出於某種原因,文本顯示的比應該小的多。 我將添加我創建的類... – 2010-03-24 23:17:28

+0

在Pyglet網站上找到了一些可能對您有用的信息。 http://www.pyglet.org/doc/programming_guide/font_sizes.html – 2010-03-25 08:17:10

+0

非常感謝。 不幸的是pyglet似乎正在使用完全錯誤的像素大小的文本,我會提出一個新的問題與這個問題有關。 但這是很好的信息。 – 2010-03-29 16:15:57