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系のプログラム