DJGL-文字の描画

文字の描画


このページでは文字の描画について解説します。基本的なことは図形の描画と同じです。
まずは以下のソースコードを打ち込んでみましょう。

*




  1. i
  2. import java.awt.Color;
  3.  
  4. import densan.s.game.drawing.Drawer;
  5. import densan.s.game.manager.GameManager;
  6. import densan.s.game.manager.Updatable;
  7.  
  8.  
  9. public class TestGame implements Updatable {
  10.  
  11. //初期化
  12. public TestGame() {
  13. // まだ使わない
  14. }
  15. //描画
  16. @Override
  17. public void draw(Drawer d) {
  18. //色の設定
  19. //青に
  20. d.setColor(Color.BLUE);
  21. //塗りつぶした四角形を描画(X座標、Y座標、幅、高さ)
  22. d.fillRect(100, 200, 100, 200);
  23. //色を赤に
  24. d.setColor(Color.RED);
  25. //円の輪郭を描画(X座標、Y座標、半径)
  26. d.drawCircle(200, 400, 100);
  27. //------------
  28. //変更点開始
  29. /////////////////
  30. //比較用の赤線
  31. d.drawLine(0, 50, 800, 50, 1);
  32. //フォントサイズ指定
  33. d.setFontSize(20);
  34. //黒
  35. d.setColor(Color.BLACK);
  36. //左下座標を指定して文字を描画
  37. d.drawString("黒文字L", 0, 50);
  38. //中心を指定して文字を描画
  39. d.drawStringCenter("黒文字C", 400, 50);
  40. //右下座標を指定して文字を描画
  41. d.drawStringRight("黒文字R", 800, 50);
  42. //フォントサイズ指定
  43. d.setFontSize(200);
  44. //オレンジ
  45. d.setColor(Color.ORANGE);
  46. //中心に大きく描画
  47. d.drawStringCenter("中心", 400, 300);
  48. /////////////////
  49. //変更点終了
  50. //------------
  51.  
  52. }
  53. //更新
  54. @Override
  55. public void update() {
  56. // まだ使わない
  57.  
  58. }
  59. //初期化
  60. public static void main(String[] args) {
  61. //ゲームを管理するクラスを取得
  62. GameManager gm = GameManager.getInstance();
  63. //このメソッドでウインドウを表示する
  64. //引数はそれぞれ(幅, 高さ, タイトルバーに表示する文字)
  65. gm.createFrame(800, 600, "テストゲーム");
  66. //更新と描画を担うオブジェクトを設定
  67. gm.setUpdatable(new TestGame());
  68. }
  69.  
  70. }
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  

このコードを実行すると画像のようになります。


解説


今回も書き加えたのはdrawメソッドの中身ぐらいです。(30~47)
前回説明したメソッドの詳細は省きます。
  • 33行目のsetFontSizeは描画する文字のサイズを指定します。
    • 引数にサイズの数値を指定します。
    • サイズは縦幅が数値と同じピクセルぐらいになります。
      • 文字やフォントによってかなり違うのでちょっとずつ変えてって確かめたほうが良いです。
    • デフォルトのサイズは変更される可能性がある上に、別の場所でサイズを変えるとそのサイズが次のループでも適用されます。かんたんなデバック出力以外ではできるだけサイズを指定しましょう。
  • 37~41行目のdrawString,drawStringCenter,drawStringRightメソッドは文字を描画するメソッドです。
    • すべて引数は(描画する文字列、X座標、Y座標)です。
    • それぞれの違いは指定した座標からどう文字を描画するかです。
      • drawString:指定した座標が文字の左下になります。つまり左詰めでベースライン(文字の下端)指定です。
      • drawStringCenter:指定した座標が文字の中心になります。つまり中央揃えでセンターライン(文字の中心)指定です。このメソッドは他と違って縦も中心に合わせるので注意してください。
      • drawStringRight:指定した座標が文字の右下になります。つまり右詰めでベースライン指定です。
    • 文字の近くを通っている赤い線がメソッドで指定してるY座標を示しているのでそれを参考にするとわかりやすいです。
    • 文字は図形と違ってY座標は基本的に下側を指定することに注意してください。
  • 文字描画でもsetColorで指定した色が引き継がれます。
  • 文字関連ではsetFontというメソッドも存在します。フォントを指定するメソッドです。自作フォントなんかも指定できます。
    • 。詳細はsetFontのjavaDocとその引数に指定するFontのJavaDocを参照してください。
    • FontについてはJavaの標準ライブラリのクラスなのでググればいろいろ出てきます。ただしjava.awt.Fontであることを確かめたほうが良いです。(別パッケージで同じ名前のクラスが他にある)
  • Drawerについて詳しくはhttp://kiki33.bitbucket.org/densan/s/game/drawing/Drawer.html


まとめ


 今回は文字描画について解説しました。こちらはゲームでも普通に使います。ただ、見た目を重視するならちゃんとしたフォントを使ったりフォントを自作したり数字とかは画像にしたりします。ただ扱いがかんたんなのでデバック出力とかに便利です。

名前:
コメント:

すべてのコメントを見る