2009-07-10 8 views
6

私はpygameを使ってPythonでゲームを書いています。スクリーンにテキストを描画する必要があります。アウトラインフォントをレンダリングするにはどうすればよいですか?

このテキストを輪郭付きの1つの色でレンダリングしたいので、テキストがどのような背景に表示されているか心配する必要はありません。

pygame.fontはこの種のことを直接サポートするようには思われません。これを達成するための良い解決策があれば、私は疑問に思います。

+0

私は答えを受け入れましたが、私はまだmigthが存在する他の解決策に興味があります。 – SpoonMeiser

答えて

2

は、私はあなたに迅速かつを与えることができ悪い解決策:外のため、この

UUU 
UIU 
UUU 

Uのような

印刷テキスト8回、それを囲むように、プラス内部テキストのための1つのより多くの時間、色と私は内側の色です。

+1

実際には、アウトラインが1ピクセル幅を超えない場合、4回(コーナー)十分です。 2つのピクセルも同様に細かいはずです。フォントレンダラーの速度によって、ソリューションが実際どれだけ悪いかによって異なります。私はXNAで使用しましたが、少なくともテキストがバッチレンダリングされていれば、かなり高速です。 – OregonGhost

+0

良いヒント! –

+0

フォントを一度レンダリングするだけで済みます。レンダリングされたサーフェスは、ターゲットサーフェスにblitされるたびに、複数回再利用できます。 – SingleNegationElimination

3

迅速かつ汚い方法は、テキストの位置を中心とする円の上に少量ずつシフトアウトラインの色、とあなたのテキストを複数回レンダリングするようになります:

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

編集:あなたがしてきたDOHもっと早く !私は私の答えを削除しませんが、このASCIIアートはちょうどあまりにも良いですし、ライブに値する!

編集2: OregonGhostに記載されているように、アウトラインの幅に応じて、アウトラインのレンダリングに必要なステップが増えます。

+0

Nick D.の解答を参照してください。この回答も同様です。 – OregonGhost

関連する問題