2009-07-10 8 views
6

J'écris un jeu en python avec pygame et j'ai besoin de rendre le texte sur l'écran.Quel est un bon moyen de rendre les polices décrites?

Je souhaite rendre ce texte en une seule couleur avec un contour, de sorte que je n'ai pas à m'inquiéter du type d'arrière-plan sur lequel le texte est affiché.

pygame.font ne semble pas offrir de support pour faire ce genre de chose directement, et je me demande si quelqu'un a de bonnes solutions pour y parvenir?

+0

J'ai accepté une réponse, mais je suis toujours intéressé par toutes les autres solutions qui existent. – SpoonMeiser

Répondre

2

Je peux vous donner un rapide et mauvaise solution:

imprimer le texte 8 fois, de l'entourer, plus une fois de plus pour le texte intérieur, comme celui-ci

UUU 
UIU 
UUU 

U pour extérieur la couleur et moi pour la couleur intérieure.

+1

En fait, quatre fois (les coins) est assez bon si le contour n'est pas beaucoup plus large qu'un pixel. Deux pixels devraient être bien aussi. Cela dépend de la vitesse du moteur de rendu des polices, à quel point la solution est vraiment mauvaise. Je l'ai utilisé dans XNA et c'est assez rapide là-bas, au moins si le texte est rendu par lot. – OregonGhost

+0

bon conseil! –

+0

vous avez seulement besoin de rendre la police une fois. Vous pouvez réutiliser la surface rendue plusieurs fois pour chaque fois qu'elle est appliquée à la surface cible. – SingleNegationElimination

3

Un moyen rapide et sale serait de rendre votre texte plusieurs fois avec la couleur du contour, décalé par petites quantités sur un cercle autour de la position du texte:

 
      1 
     8 | 2 
     \ |/
     \|/ 
    7----*----3 
     /|\ 
     /| \ 
     6 | 4 
      5 

Modifier: Doh vous avez été plus rapide ! Je ne vais pas supprimer ma réponse, cet art ASCII est tout simplement trop beau et mérite de vivre!

Édition 2: Comme l'indique OregonGhost, il se peut que vous ayez besoin de plus ou moins d'étapes pour le rendu du contour, en fonction de la largeur de votre contour.

+0

Voir mon commentaire à la réponse de Nick D., qui s'applique à celui-ci aussi. – OregonGhost

Questions connexes