2012-02-03 16 views
1

私はキャンバスとペイントで始まります。私はキャンバスにテキストをペイントしたいが、オリジナルのビットマップよりも長くすることができる。テキストはビットマップに出ます。キャンバスと複数行にテキストを描画します

最後に達したときに新しい行を作成するための自動管理機能がありますか?または私は高さと距離で遊ぶべきですか?おかげで

+0

Swingを使用しても構わない場合は、[JTextArea](http://docs.oracle.com/javase/6/docs/api/javax/swing/JTextArea.html)を使用して、複数行のテキスト表示を管理しますあなたのために。 CanvasはAWTヘビー級オブジェクトで、軽量のコントロールと混在するのが難しい場合があります。 JTextAreaは軽量なので、問題が少なくなります。 –

答えて

0

私はあなたにもここで見つけ、このコードスニペットを見ていることを示唆している:それはあなたのテキストの執筆内を管理するうように https://stackoverflow.com/a/15092729/1759409

一定の幅と高さを持ち、自動的にキャンバス上に自動的に描画します。

0

最良の方法はStaticLayoutでテキストを描画することです:

// init StaticLayout for text 
StaticLayout textLayout = new StaticLayout(
    gText, paint, textWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); 

// get height of multiline text 
int textHeight = textLayout.getHeight(); 

// get position of text's top left corner 
float x = (bitmap.getWidth() - textWidth)/2; 
float y = (bitmap.getHeight() - textHeight)/2; 

// draw text to the Canvas center 
canvas.save(); 
canvas.translate(x, y); 
textLayout.draw(canvas); 
canvas.restore(); 

詳細はmy blogpostを参照してください。

関連する問題