Faire pivoter le texte
résumé
Faites pivoter le texte pour l’afficher. Dans l’exemple, il est automatiquement pivoté afin que vous puissiez le voir visuellement.
Environnement d’exploitation
Conditions préalables
| Versions XNA prises en charge | 
 | 
| Plates-formes prises en charge | 
 | 
| Version du Vertex Shader requise par Windows | 2.0 | 
| Version du Pixel Shader requise par Windows | 2.0 | 
Environnement d’exploitation
| plateforme | 
 | 
substance
Pour faire pivoter le texte et l’afficher, spécifiez l’angle de rotation « radian » comme cinquième argument de la méthode « SpriteBatch.DrawString ». L’unité couramment utilisée des nombres 0 ~ 360 est appelée « degré », et « radian » est une valeur de 0 ~ 2π.
Dans l’exemple, l’unité de degré généralement reconnaissable est utilisée pour convertir le nombre en radians à l’aide de la méthode « MathHelper.ToRadians » et le passer à l’argument. Bien sûr, si vous faites un pré-calcul, vous pouvez passer le radian tel quel.
// 時計回りに45度回転させて描画
this.spriteBatch.DrawString(this.font,
    "Draw rotate text (45 degree).", new Vector2(200.0f, 200.0f), Color.White,
    MathHelper.ToRadians(45.0f), Vector2.Zero, 1.0f, SpriteEffects.None, 0.0f);
SpriteBatch.DrawString méthode
Dessinez une ficelle.
| spriteFont | SpriteFont | Spécifie le SpriteFont qui contient l’image de chaîne. | 
| SMS | corde | Spécifie le texte à afficher. | 
| position | Vecteur2 | Position à laquelle afficher le texte. Spécifiez les coordonnées à l’écran par rapport au coin supérieur gauche de l’écran. L’origine du texte se trouve en haut à gauche du premier caractère. | 
| Couleur | Couleur | Couleur du texte | 
| rotation | flotter | L’angle de rotation du texte. Les unités sont spécifiées en radian. L’axe de rotation se trouve en haut à gauche du texte. | 
| origine | Vecteur2 | Spécifie la position de l’axe de rotation lors de la rotation du texte. Vous spécifiez la position du texte qui correspond à l’axe de rotation, mais en réalité, l’axe de rotation est fixé en haut à gauche du texte et la position d’affichage du texte est déplacée par -origin. | 
| écaille | flotter | Spécifie l’agrandissement du texte. En utilisant 1.0 comme référence, mettez l’échelle verticalement et horizontalement. L’origine de l’extension se trouve en haut à gauche du texte. | 
| Effets | SpriteEffets | Spécifie l’effet de l’inversion de l’affichage du texte. Si vous ne faites rien d’autre, spécifiez SpriteEffects.None. | 
| layerDepth | flotter | Spécifie la profondeur à laquelle le texte est affiché. Il est principalement utilisé pour afficher du texte au premier plan ou à l’arrière-plan. Spécifiez dans la plage de 0,0 ~ 1,0, où 0,0 est l’avant et 1,0 est l’arrière. | 
MathHelper.ToRadians méthode
Convertissez la valeur en degrés en radian. La formule de conversion est « radian = degré * π / 180,0 ».
| Degrés | flotter | Spécifie la valeur en degrés à convertir en radian. | 
| Valeurs de retour | flotter | Renvoie la valeur en degrés convertie en radian. | 
Par défaut, l’axe de rotation se trouve en haut à gauche du texte.
Tous les codes
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
#if WINDOWS_PHONE
using Microsoft.Xna.Framework.Input.Touch;
#endif
namespace RotateText
{
     <summary>
     ゲームメインクラス
     </summary>
    public class GameMain : Microsoft.Xna.Framework.Game
    {
         <summary>
         グラフィックデバイス管理クラス
         </summary>
        private GraphicsDeviceManager graphics = null;
         <summary>
         スプライトのバッチ化クラス
         </summary>
        private SpriteBatch spriteBatch = null;
         <summary>
         スプライトでテキストを描画するためのフォント
         </summary>
        private SpriteFont font = null;
         <summary>
         リアルタイムに増加する回転量
         </summary>
        private float realRotate = 0.0f;
         <summary>
         GameMain コンストラクタ
         </summary>
        public GameMain()
        {
            // グラフィックデバイス管理クラスの作成
            this.graphics = new GraphicsDeviceManager(this);
            // ゲームコンテンツのルートディレクトリを設定
            this.Content.RootDirectory = "Content";
#if WINDOWS_PHONE
            // Windows Phone のデフォルトのフレームレートは 30 FPS
            this.TargetElapsedTime = TimeSpan.FromTicks(333333);
            // バックバッファサイズの設定
            this.graphics.PreferredBackBufferWidth = 480;
            this.graphics.PreferredBackBufferHeight = 800;
            // フルスクリーン表示
            this.graphics.IsFullScreen = true;
#endif
        }
         <summary>
         ゲームが始まる前の初期化処理を行うメソッド
         グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
         </summary>
        protected override void Initialize()
        {
            // TODO: ここに初期化ロジックを書いてください
            // コンポーネントの初期化などを行います
            base.Initialize();
        }
         <summary>
         ゲームが始まるときに一回だけ呼ばれ
         すべてのゲームコンテンツを読み込みます
         </summary>
        protected override void LoadContent()
        {
            // テクスチャーを描画するためのスプライトバッチクラスを作成します
            this.spriteBatch = new SpriteBatch(this.GraphicsDevice);
            // フォントをコンテンツパイプラインから読み込む
            this.font = this.Content.Load<SpriteFont>("Font");
        }
         <summary>
         ゲームが終了するときに一回だけ呼ばれ
         すべてのゲームコンテンツをアンロードします
         </summary>
        protected override void UnloadContent()
        {
            // TODO: ContentManager で管理されていないコンテンツを
            //       ここでアンロードしてください
        }
         <summary>
         描画以外のデータ更新等の処理を行うメソッド
         主に入力処理、衝突判定などの物理計算、オーディオの再生など
         </summary>
         <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Update(GameTime gameTime)
        {
            // Xbox 360 コントローラ、Windows Phone の BACK ボタンを押したときに
            // ゲームを終了させます
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }
            // 回転量を増やす
            this.realRotate += (float)gameTime.ElapsedGameTime.TotalSeconds * 60.0f;
            // 登録された GameComponent を更新する
            base.Update(gameTime);
        }
         <summary>
         描画処理を行うメソッド
         </summary>
         <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Draw(GameTime gameTime)
        {
            // 画面を指定した色でクリアします
            this.GraphicsDevice.Clear(Color.CornflowerBlue);
            // スプライトの描画準備
            this.spriteBatch.Begin();
            // 普通に描画
            this.spriteBatch.DrawString(this.font,
                "Draw rotate text (0 degree).", new Vector2(200.0f, 200.0f), Color.White,
                MathHelper.ToRadians(0.0f), Vector2.Zero, 1.0f, SpriteEffects.None, 0.0f);
            // 時計回りに45度回転させて描画
            this.spriteBatch.DrawString(this.font,
                "Draw rotate text (45 degree).", new Vector2(200.0f, 200.0f), Color.White,
                MathHelper.ToRadians(45.0f), Vector2.Zero, 1.0f, SpriteEffects.None, 0.0f);
            // 自動で回転させて描画
            this.spriteBatch.DrawString(this.font,
                "Draw rotate text (" + ((int)this.realRotate).ToString() + " degree).",
                new Vector2(200.0f, 200.0f), Color.White,
                MathHelper.ToRadians(this.realRotate), Vector2.Zero,
                1.0f, SpriteEffects.None, 0.0f);
            // スプライトの一括描画
            this.spriteBatch.End();
            // 登録された DrawableGameComponent を描画する
            base.Draw(gameTime);
        }
    }
}