2013-02-28 6 views
6

は、次のことが書かれています。私は、テキストが原点アップから引き出されていることを知っているが、私は次の引数を与えたときに、私のテキストをカットします:Canvas.drawText()は実際にテキストをどのように描画しますか?</p> <pre><code>x The x-coordinate of origin for where to draw the text y The y-coordinate of origin for where to draw the text </code></pre> <p>しかし、それはこのテキストが描画される方向については何も言っていない:このメソッドのドキュメントで

canvas.drawText(displayText, 0, canvas.getHeight(), textPaint); 

加えて、私はテキストが描画されることを意味Align.LEFTを(使用していると仮定します

正しい引数はどうすればよいですか(私は固定数を使用したくないと仮定します)?

int width = this.getMeasuredWidth()/2; 
int height = this.getMeasuredHeight()/2; 
textPaint.setTextAlign(Align.LEFT); 
canvas.drawText(displayText, width, height, textPaint); 

幅と高さがちょうど私の場合には任意に計算されます。

+0

おそらくこれはあなたが探しているものです(答えにコメントを確認してください)。 http://stackoverflow.com/questions/10606410/android-canvas-drawtext-y-position-of-text –

+0

テキストはどのようにカットされますか?どんなテキストも表示されますか? – Barney

+0

y値をcanvas.getHeight()/ 2に設定しようとすると、真ん中に現れるテキストが正しく表示されますか?また、より具体的に何を達成したいのかを言うべきです。 – Barney

答えて

2

これは私が最終的に使用したものである:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    if (textAlignment == Align.CENTER) { 
     canvas.drawText(displayText, canvas.getWidth()/2, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.RIGHT) { 
     canvas.drawText(displayText, canvas.getWidth()-TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.LEFT) { 
     canvas.drawText(displayText, TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    //canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p); 
} 

二つのコメント:

  1. TEXT_PADDINGは、私は(私の場合の3DPで)実行時にピクセルに変換するDP寸法です。
  2. 最後の行のコメントを解除して、デバッグのためキャンバスの周りに矩形を描くことができます。
2

たぶん、あなたはその作業かがどうかを確認するために次のコードを使用することができます。

+0

カットされて、私のコメントを参照してください.. –

関連する問題

 関連する問題