コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

SurfaceViewに文字を書く

SurfaceViewに文字を描こうと思ってプログラムを作ったのですが、初心者なので思いっきりはまりました。文字の描き方を理解したつもりなので、メモしておきます。

グラフィック座標

グラフィック座標の原点は、左上が(0,0)のようです。

文字を描く

SurfaceViewに文字を描くときには、下記のような感じになると思います。ただし、下のプログラムは抜粋しています。プログラム自体はスレッドを立ち上げて、run()内でループしてdrawOnCanvas()を呼んでいる感じです。

  private Paint paintf;
  private Paint paintb;

public TestSurfaceHolderCallback(){
  paintf = new Paint();
  paintf.setStyle(Style.FILL);
  paintf.setARGB(255, 255, 255, 255);
  paintf.setTextSize(32);	
  paintb = new Paint();
  paintb.setStyle(Style.FILL);
  paintb.setARGB(255, 0, 0, 0);
}

public void drawOnCanvas(Canvas canvas, String txt){
  canvas.drawPaint(paintb);  //画面を黒塗り(消去している)
  canvas.drawText( txt, 0, 16, paintf);
  canvas.drawText( txt, 0, 48, paintf);
}

drawTextの文字Y座標は、文字の左下を示す

ここで、はまりました。何も考えずに、canvas.drawText( txt, 0, 0, paintf);としていたのですが、全然文字が表示されません。悩んで、悩んで、指定座標は文字の左下ということに気づきました。

上の画像で、上半分が隠れている文字は、canvas.drawText( txt, 0, 16, paintf);と指定した文字です。すべて見えている文字は、canvas.drawText( txt, 0, 48, paintf);と指定したものです。
上の文字はY座標が16と指定しているので、フォントの左下の座標が(0,16)となるように表示されたため、フォント(32dot)の下半分だけが表示されています。

とりあえず、文字の表示の仕方はわかりました。

本当にやりたいことリスト

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム・・・始めつつあります。
  • Web系のプログラム