我正在制作一个图像编辑器,试图使用canvas.drawText()在图片上绘制文本。到目前为止,我已经成功地完成了这个任务,但是当用户输入过长的文本时,文本会在页面上继续一行,并且无法自动换行适应屏幕宽度。我该如何解决这个问题?我尝试使用静态布局来实现,但似乎无法使其正常工作,有没有人能提供一个教程来帮助我解决这个问题?
我的用于使用静态布局在画布上绘制文本的函数:
public Bitmap createImage(float scr_x,float scr_y,String user_text){
Canvas canvas = new Canvas(image);
scr_x = 100;
scr_y = 100;
final TextPaint tp = new TextPaint(Color.WHITE);
canvas.save();
StaticLayout sl = new StaticLayout("" + user_text, tp, originalBitmap.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
sl.draw(canvas);
return image;
}
好的,我已经更新了代码,但是当我尝试在图像上绘制时,什么也没有发生,我不知道为什么:
public Bitmap createImage(String user_text) {
// canvas object with bitmap image as constructor
Canvas canvas = new Canvas(image);
TextPaint tp = new TextPaint();
tp.setColor(Color.RED);
tp.setTextSize(50);
tp.setTextAlign(Align.CENTER);
tp.setAntiAlias(true);
StaticLayout sl = new StaticLayout("" + user_text, tp,
canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1, 0, false);
canvas.translate(100, 100);
sl.draw(canvas);
return image;
}
StaticLayout不能在canvas上绘制吗?
StaticLayout
的良好使用示例:https://dev59.com/Omw15IYBdhLWcg3wMpEY#8369690 - Joshua Pinter