矩形の描画

XNA で様々なサイズと色の矩形を簡単に描画する方法です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. ゲームプログラムでは Hit Point, Magic Point, Life Point などを矩形で表示することが良くあります。
    XNA には矩形を描画する専用の関数が見当たらないので、サイズや色を変えて矩形を描画する方法を紹介しましょう。
    幸いにして XNA には画像を拡大・縮小して描画する機能が備わっています。
    この機能を使えばサイズの異なる矩形の描画は簡単です。
  2. 特にサイズは問いませんが、64*64 ピクセル程度の矩形を白で塗りつぶした画像を用意して下さい。
    通常の画像の描画と同じように texture を宣言して画像をロードします。
    "white" は Asset Name で white.png の画像をリソースとして組み込みました。
        Texture2D   texture;     // 描画に使用するテクスチャ
    
        texture = Content.Load<Texture2D>("white"); 
        
  3. 矩形の色を変えて描画するコードです。
    元は白い画像ですが Color の指定を変えると、様々な色の矩形を描画することが出来ます。
    最後の行は送り側(画像)の範囲を矩形で設定してみました。
        spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
        spriteBatch.Draw(texture, new Vector2(0.0f, 0.0f), Color.White);
        spriteBatch.Draw(texture, new Vector2(100.0f, 0.0f), Color.Black);
        spriteBatch.Draw(texture, new Vector2(200.0f, 0.0f), Color.Red);
        spriteBatch.Draw(texture, new Vector2(300.0f, 0.0f), Color.Green);
        spriteBatch.Draw(texture, new Vector2(400.0f, 0.0f), Color.Blue);
        spriteBatch.Draw(texture, new Vector2(500.0f, 0.0f), Color.Yellow);
        spriteBatch.Draw(texture, new Vector2(0.0f, 100.0f), new Rectangle(0, 0, 64, 64), Color.Magenta);
        
  4. 矩形のサイズを変えて描画するコードです。
    元は 64*64 の矩形ですが、受け取り側のサイズを Rectangle で設定することが出来ます。
        spriteBatch.Draw(texture, new Rectangle(0, 200, 600, 40), new Rectangle(0, 0, 64, 64), Color.Green);
        
  5. アルファブレンディングを設定して描画してみました。
    192, 128, 64 がアルファ値で、値が小さくなるほど、上から重ねる画像が薄く(透明)になります。
        spriteBatch.Draw(texture, new Rectangle(0, 260, 400, 60), new Rectangle(0, 0, 64, 64), new Color(255, 255, 0, 192));
        spriteBatch.Draw(texture, new Rectangle(0, 340, 200, 80), new Rectangle(0, 0, 64, 64), new Color(255, 255, 0, 128));
        spriteBatch.Draw(texture, new Rectangle(0, 440, 100, 100), new Rectangle(0, 0, 64, 64), new Color(255, 255, 0, 64));
        spriteBatch.End();
        

【演習】

Hit Point を矩形で表示して、キー操作で操作して下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(XNA(C#) game program)