Les objets de type Surface : Créer une surface à partir d'un texte
Généralités
L'écriture de texte se fait en deux étapes :
- - la création d'un objet de type Font ;
- - la création d'une surface à partir d'un objet Font et d'une chaine de caractères
La surface peut ensuite être placée (avec la méthode blit()) dans n'importe quelle autre surface y compris la fenêtre principale.
Création de l'objet de type font
Méthode
Description
pygame.font.SysFont(name, size, bold=False, italic=False) -> Font
Créer un objet de type Font à partir d'un nom de police
pygame.font.Font(file, size) -> Font
Créer un objet de type Font à partir d'un fichier de police
Création de la surface
Méthode
Description
ma_font.render(text, antialias, color, background=None) -> Surface
Pour créer une surface à partir d'un objet de type Font
Exemples
Affichage d'un texte dans deux polices différentes
L'exemple suivant nécessite que le fichier de police de caractère 'deadly finisher.ttf' soit présent dans le même dossier que le fichier du programme.
import pygame
pygame.init()
BLANC = (255, 255, 255)
fen = pygame.display.set_mode((800, 600))
continuer = True
while continuer :
for event in pygame.event.get():
if event.type == pygame.QUIT:
continuer = False
# Création des objets de type Font
police1 = pygame.font.SysFont('Arial', 70, False, True)
police2 = pygame.font.Font('deadly finisher.ttf', 70)
# Création des surfaces
surface_text1 = police1.render("Bonjour !", 1, BLANC)
surface_text2 = police2.render("Bonjour !", 1, BLANC)
# Transfert des surfaces dans la fenêtre principale
fen.blit(surface_text1, (50,100))
fen.blit(surface_text2, (50,200))
pygame.display.flip()
pygame.quit()
Affichage d'un texte centré dans un disque
import pygame
pygame.init()
couleur_fond = (0, 0, 0)
couleur_texte = (255, 255, 255)
couleur_disque = (200, 0, 0)
fen = pygame.display.set_mode((800, 600))
continuer = True
while continuer :
for event in pygame.event.get():
if event.type == pygame.QUIT:
continuer = False
# Coloration du fond de la fenêtre
fen.fill(couleur_fond)
# Affichage du disque et récupération du rectangle (type Rect) correspondant
rect_disque = pygame.draw.circle(fen, couleur_disque, (200,150), 50)
# Création de l'objet de type Font
police = pygame.font.SysFont('Arial', 70, False, False)
# Création de la surface contenant le texte
surface_texte = police.render("A", 1, couleur_texte)
# Récupération du rectangle (type Rect) correspondant à la surface du texte
rect_texte = surface_texte.get_rect()
# Affectation des coordonnées du centre du rectangle du disque aux coordonnées du centre du rectangle du texte
rect_texte.center = rect_disque.center
# Affichage de la surface du texte dans la fenêtre
fen.blit(surface_texte, rect_texte)
# Actualisation de l'affichage de la fenêtre
pygame.display.flip()
pygame.quit()