マトリックス(ゲームボード)を描画しているSurfaceView
場所があり、マトリックスの各セルの高さと幅は40ピクセルです。
それらのセル内に、次の線に沿ってスクラブルのようなタイルを保存する必要があります。
+---------+
| # |
| # # |
| # # |
| ##### |
| # # |
| 17|
+---------+
文字は常に1文字で、数字は常に数字で、最大2桁です。
これを行うために、私は実際に私の表面上のセルの左上のピクセルの位置を計算しました、そして私がしたいのは特定の仕様に文字と数字を描くことです。
数字が特定の領域(たとえば、右下の10x10セル)に収まり、数字の領域に侵入することなく文字がタイルの中央に配置されるようにする必要があります。
私は現在、最大の文字と数字のサイズを計算するためにを使用することを計画してPaint.getTextBounds()
います。サイズが大きすぎることが判明した場合は、単純に小さいフォントで計算します。
もちろん、私はより良い方法の提案を受け入れています。これ以上の方法はありませんが、まだ問題があります。
ペイントオブジェクトを設定する方法は次のとおりです。
numPaint = new Paint();
numPaint.setStrokeWidth(1);
numPaint.setColor(Color.BLACK);
テキストの実際の描画は単純です。
canvas.drawText(Integer.toString(num), pixcol + 30, pixrow + 30, numPaint);
これにより、セルの右下隅に期待どおりに数値が配置されますが、たとえば15x15になった場合に、テキストがセルの外に出ないようにするフォントサイズなどを指定したことはありません。サイズで。
運が良ければぴったりだと思います。いずれにせよ、私はalphaPaint
まったく同じ方法でオブジェクトを設定しましたが、もう少し大きくしたいと思います。
蛇行して申し訳ありませんが、すべての詳細がそこにあることを確認したかっただけです。肝心な質問は、ペイントオブジェクトのフォントサイズをどのように設定するかということです。オブジェクトにはがありますが、同等のものgetFontMetrics()
はないようです。set...
最初setTypeface()
は有望に見えましたが、フォントや太字/斜体など、特定のサイズを強制することについては言及されていません。