2012年09月24日
Canvas で文字の大きさを測る
Canvas の中で文字を描画するとき、大きさを取得しなければなりませんが、
大きさを取得する方法について書きます。
Canvas の場合は、Graphics で記述することになります。
drawString を使用します。
この際に、たとえば枠でくくるような機能が欲しい場合に、
文字列の大きさを把握する必要があります。
これを、以下のようにして取得しています。
本来は枠に隙間を入れたりして調整しますが、だいたい上記のようなコードを入れています。
枠自体の取得は簡単ですが、文字列を表示するときに、縦座標で getAscent の結果を
考慮に入れておかないと、ずれることになるので注意が必要です。
getAscent は、フォントのベースラインの高さです。文字列を描くときの基準座標になりますが、他の描画と合わせる際はベースライン分も入れておきましょう。
{a8.net http://books.livedoor.com/item/1062223}
大きさを取得する方法について書きます。
Canvas の場合は、Graphics で記述することになります。
drawString を使用します。
この際に、たとえば枠でくくるような機能が欲しい場合に、
文字列の大きさを把握する必要があります。
これを、以下のようにして取得しています。
final String s = "あいうえお";
Graphics g = canvas.getGraphics();
Font f = Font.getDefaultFont();
int width = f.getBBoxWidth(s);
int height = f.getBBoxHeight(s);
int top = 10;
int left = 10;
g.drawRect(left, top, width, height);
g.drawString(s, left, top + f.getAscent());
本来は枠に隙間を入れたりして調整しますが、だいたい上記のようなコードを入れています。
枠自体の取得は簡単ですが、文字列を表示するときに、縦座標で getAscent の結果を
考慮に入れておかないと、ずれることになるので注意が必要です。
getAscent は、フォントのベースラインの高さです。文字列を描くときの基準座標になりますが、他の描画と合わせる際はベースライン分も入れておきましょう。
{a8.net http://books.livedoor.com/item/1062223}
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image