pygame - 如何将文本写入特定位置?另外,如何使用坐标

时间:2013-12-12 17:56:46

标签: python pygame python-3.3

我一直在四处搜寻,我真的找不到任何关于如何写文字的好资源?我已经尝试使用渲染命令来处理文本,但它对我不起作用。

此外,你在这里的时候;是否存在“叠加”类型的东西,您可以在其中确切地看到坐标的位置?每次我使用坐标来确定一个区域时,我无法弄清楚整个坐标系如何与使用反复试验分开...

非常感谢,

3 个答案:

答案 0 :(得分:2)

surf = pygame.display.set_mode((WIDTH, HEIGHT))

...

# get font object
font = pygame.font.SysFont('Arial', 12, bold=True)    

# render a given font into an image
img = font.render('Text to write', True,
                  pygame.Color(FONT_FG_COLOR),
                  pygame.Color(FONT_BG_COLOR))

# and finally put it onto the surface.
# the code below centres text image
surf.blit(img, ((surf.get_width() - img.get_width())/2,
                (surf.get_height() - img.get_height())/2))

答案 1 :(得分:2)

这里有一些帮助:http://inventwithpython.com/pygame/chapters/

并针对您的具体问题,请阅读:http://inventwithpython.com/pygame/chapter2.html

向下滚动到“Pixel Coordinates”以了解pygames中的坐标系

在第2章中进一步向下滚动,了解字体以及如何渲染它们。

答案 2 :(得分:1)

渲染字体非常简单!

import pygame
from pygame.locals import * 

# Initialize the font system and create the font and font renderer
pygame.font.init()
default_font = pygame.font.get_default_font()
font_renderer = pygame.font.Font(default_font, size)

# To create a surface containing `Some Text`
label = font_renderer.render(
    "Some Text",   # The font to render
    1,             # With anti aliasing
    (255,255,255)) # RGB Color

这会返回一个可以对另一个表面进行blit的表面。该表面还包含具有所述字体尺寸的Rect。

# To apply this surface to another you can do the following
another_surface.blit(
    label,  # The text to render
    (0,0))  # Where on the destination surface to render said font

现在坐标系非常简单,

您可以像这样创建屏幕

import pygame
from pygame.locals import * 
screen_dimensions = width, height = 800, 600
screen = pygame.display.set_mode(screen_dimensions)

在pygame中,这将创建一个像这样的屏幕

       800    
    -----------
    -         -
600 -         -
    -         -
    -----------

最左上角是坐标0,0,最右下角是800,600

如果你想在左上角用5px的填充字体对字体进行blit,你可以执行以下操作:

# Using the label created above
screen.blit(label, (5, 5))

我在PyGame中编写了一个生命克隆游戏,你可以看到源https://github.com/MikeMcMahon/GameOfLife并弄清楚我是如何使用这些字体来渲染它们的。

关于覆盖物以查看事物的确切坐标。您可以通过捕获鼠标位置pygame.mouse.get_pos()并将其推送到您在曲面上渲染的标签来轻松实现。