我是Canvas和Paint的入門者。我想在Canvas中繪製文本,但它可能比原始位圖更長。所以文本出去的位圖。在Canvas和多行中繪製文本
是否有某種類型的自動管理器爲此在達到目標時創建新行?還是應該玩高度和距離?由於
我是Canvas和Paint的入門者。我想在Canvas中繪製文本,但它可能比原始位圖更長。所以文本出去的位圖。在Canvas和多行中繪製文本
是否有某種類型的自動管理器爲此在達到目標時創建新行?還是應該玩高度和距離?由於
是的,你可以管理這個StaticLayout或DynamicLayout
我建議你也看看在這裏發現此代碼段: https://stackoverflow.com/a/15092729/1759409
因爲它會管理你的文字中寫一定的寬度和高度,並自動正確繪製到畫布上。
最好的辦法是繪製文本與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。
如果您不介意使用Swing,[JTextArea](http://docs.oracle.com/javase/6/docs/api/javax/swing/JTextArea.html)將管理您的多行文本顯示爲你。 Canvas是一個AWT重量級對象,與輕量級控件混合使用可能會非常棘手。 JTextArea是一個輕量級的,這可能會導致更少的問題。 – 2012-02-03 13:59:15