Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame平滑字体_Python_Fonts_Pygame - Fatal编程技术网

Python Pygame平滑字体

Python Pygame平滑字体,python,fonts,pygame,Python,Fonts,Pygame,我正在使用pygame库开发一个简单的游戏,但当我开始绘制文本(启用了抗锯齿)时,它与我的Photoshop概念有点不同。字体看起来太尖了,我看不见。有些字母太薄,有些太厚。有的低,有的高。下面是一个例子(数字看起来很不相称) Photoshop: 我的游戏: 值得一提的是,在photoshop中有一个选项sharp,它使我的文字看起来就像现在游戏中的文字一样(图2)。因此,我将其切换为平滑,结果显示在第一张图片上 那么,我可以用某种方法修复这个锐利的字体,使它看起来更平滑吗?对于静态文本,

我正在使用pygame库开发一个简单的游戏,但当我开始绘制文本(启用了抗锯齿)时,它与我的Photoshop概念有点不同。字体看起来太尖了,我看不见。有些字母太薄,有些太厚。有的低,有的高。下面是一个例子(数字看起来很不相称)

Photoshop:

我的游戏:

值得一提的是,在photoshop中有一个选项
sharp
,它使我的文字看起来就像现在游戏中的文字一样(图2)。因此,我将其切换为平滑,结果显示在第一张图片上

那么,我可以用某种方法修复这个锐利的字体,使它看起来更平滑吗?对于静态文本,最好使用图像?还是我应该处理它?

我建议使用该模块以获得更好的结果

最简单的例子:

导入pygame
导入pygame.freetype
pygame.init()
window=pygame.display.set_模式((500150))
clock=pygame.time.clock()
ft_font=pygame.freetype.SysFont('Sans',50)
运行=真
运行时:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
窗口填充((255,255,255))
text_str='Player 1 9:8 Player 2'
text\u rect=ft\u font.get\u rect(text\u str)
text_rect.center=window.get_rect().center
ft_font.render_to(窗口、text_rect.topleft、text_str(100200255))
pygame.display.flip()
pygame.quit()
退出()

请澄清,这些字体是否完全相同?因为9和8在这两个方面似乎有所不同。Photoshop可能使用专有的字体渲染代码,类似于Adobe的Type1字体使用的提示,类似于Microsoft ame在LCD屏幕上渲染TrueType字体的ClearType渲染技术——因此我怀疑您一直在使用Pygame提供或生成的内容你自己的静态文本图像。@Torxed:是的,那些0看起来真的不同。;-)这与opengl的关系也比Pygame的关系更大。你看,你需要指示参考底图引擎实际平滑某些东西,抗锯齿只是平滑线条的众多方法之一,这里给出了一个很好的例子:@DaZzz我不想告诉你这一点,但你必须深入挖掘才能获得更多高级功能(也许这次也是如此)。通过Pygame/wxPython/PyGUI等,图形变得“简单”,但仅在一定程度上(请参阅此处的完整列表:)。我自己使用Pyglet是因为我意识到,一旦你深入研究了图形,你最好是尽可能地以本机方式进行操作,这不仅是为了提高速度,也是为了了解正在发生的事情,因为你时不时会遇到这样的问题,你不知道如何解决它们