XNAは、事前に準備されたビットマップフォントでのみテキスト出力を想定しています。 そして、そうです。 OSに依存しない高速で予測可能なテキストサイズ。
私の場合、正反対が必要でした。 ヘッドセットとフォントサイズの任意の選択、および低パフォーマンス要件。 タスクは非常に困難でした。 インターネットにはほとんど情報がなく、非常に断片化されていました。
条件:2Dアプリケーション、ユーザーはいつでもヘッドセット、スタイル、フォントサイズを変更できる必要があります。
解決策は非常に簡単です。 目的のテキストでビットマップを作成し、それからテクスチャを作成して表示します。
GDIツールを使用してビットマップを作成します。
ビットマップをテクスチャに変換
テクスチャを表示します
public void Draw() { var spriteBatch = new SpriteBatch( graphicsDevice ); spriteBatch.Begin(); spriteBatch.Draw( texture, coordinate, new Rectangle(0, 0, texture.Width, texture.Height), Color.White, 0f, new Vector2(0, 0), 1.0f / textureDownsizeRatio, SpriteEffects.None, 0); spriteBatch.End(); }
その結果、エッジが破れたテキストが得られ、スムージングが完全に欠けています。

ビットマップをテクスチャに変換するのは簡単な手順ではありませんでした。
ここにあるメソッドアルファチャネルを正しく転送するには、TextureFromBitmapメソッドで追加の手順が必要です。
最初に、ビットマップの色に関するデータをテクスチャに描画し、次にアルファチャネルに関する情報を描画します。
これで満足のいく結果が得られました。
ソースコード問題は次のとおりです。
1.ゆっくり。 ゲームでこの方法を使用してはいけません。さらに、モバイルデバイスでも使用してください。
2.信頼できません。 必要なフォントがシステムにない可能性があります。
3.画面に表示されるテキストの量を追跡し、非表示のテキストをトリミングすることをお勧めします。 最大テクスチャサイズは2048x2048です。 ビットマップサイズが大きい場合、テクスチャは最大サイズで作成され、ビデオカードによって目的のサイズに引き伸ばされます。 テキストはぼやけます。
アンマネージコードを使用すると、TextureFromBitmapでPNGに変換する必要がなくなります。 ここに例を見ることができ
ます 。