2009-07-10 27 views
6

Ich schreibe ein Spiel in Python mit Pygame und muss Text auf dem Bildschirm rendern.Was ist eine gute Möglichkeit, umrissene Schriften zu rendern?

Ich möchte diesen Text in einer Farbe mit einem Umriss machen, so dass ich muss nicht darum kümmern, was für Hintergrund der der Text angezeigt über wird.

pygame.font scheint nicht Unterstützung zu bieten für direkt diese Art der Sache zu tun, und ich frage mich, ob jemand dies keine gute Lösungen für das Erreichen hat?

+0

Ich habe eine Antwort akzeptiert, aber ich bin in allen anderen Lösungen immer noch daran interessiert, die es gibt migth. – SpoonMeiser

Antwort

2

Ich kann Ihnen eine schnelle und schlecht Lösung:

Druck der Text 8mal, es zu umgeben, und ein weiteres Mal für den inneren Text, wie dieser

UUU 
UIU 
UUU 

U für Außen Farbe und ich für die innere Farbe.

+1

Eigentlich ist vier Mal (die Ecken) gut genug, wenn der Umriss nicht viel mehr als ein Pixel breit ist. Zwei Pixel sollten ebenfalls gut sein. Es hängt von der Geschwindigkeit des Font-Renderers ab, wie schlecht die Lösung wirklich ist. Ich habe es in XNA verwendet und es ist ziemlich schnell dort, zumindest wenn der Text Batch-gerendert wird. – OregonGhost

+0

guter Tipp! –

+0

Sie müssen nur die Schriftart einmal rendern. Sie können die gerenderte Oberfläche mehrmals für jedes Mal wiederverwenden, wenn sie auf der Zieloberfläche angezeigt wird. – SingleNegationElimination

3

Eine schnelle und schmutzige Art und Weise Ihren Text mehrmals mit der Konturfarbe, verschoben um kleine Beträge auf einem Kreis um die Textposition sein würde, machen:

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

bearbeiten: Doh Sie waren schneller ! Ich werde meine Antwort jedoch nicht löschen, diese ASCII-Kunst ist einfach zu gut und verdient es zu leben!

Bearbeiten 2: Da OregonGhost erwähnt wird, benötigen Sie abhängig von Ihrer Gliederungsbreite möglicherweise mehr oder weniger Schritte für das Gliederungsrendering.

+0

Siehe meinen Kommentar bei Nick D.'s Antwort, die auch für diesen gilt. – OregonGhost

Verwandte Themen