一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小
private void drawNewBitmap(ImageView imageView, String str) {
Bitmap photo = BitmapFactory.decodeResource(this.getResources(), R.drawable.background);
int width = photo.getWidth();
int hight = photo.getHeight();
//建立一个空的Bitmap
Bitmap icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888);
// 初始化画布绘制的图像到icon上
Canvas canvas = new Canvas(icon);
// 建立画笔
Paint photoPaint = new Paint();
// 获取更清晰的图像采样,防抖动
photoPaint.setDither(true);
// 过滤一下,抗剧齿
photoPaint.setFilterBitmap(true); Rect src = new Rect(, , photo.getWidth(), photo.getHeight());// 创建一个指定的新矩形的坐标
Rect dst = new Rect(, , width, hight);// 创建一个指定的新矩形的坐标
canvas.drawBitmap(photo, src, dst, photoPaint);// 将photo 缩放或则扩大到dst使用的填充区photoPaint
//自定义的画笔
TextPaint textPaint=myTextPaint();
drawText(canvas,textPaint,str,,hight/,width); canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore(); imageView.setImageBitmap(icon);
saveMyBitmap(this,icon);
}
//设置画笔的字体和颜色
public TextPaint myTextPaint(){ TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);// 设置画笔
int TEXT_SIZE = Math.round( * getRATIO());
textPaint.setTextSize(TEXT_SIZE);// 字体大小
textPaint.setTypeface(Typeface.DEFAULT_BOLD);// 采用默认的宽度
textPaint.setColor(Color.argb(,,,));// 采用的颜色
return textPaint;
//写入文字,自动换行的方法
public void drawText(Canvas canvas, TextPaint Paint,String textString,int x,int y,int width) {
//int Width=Math.round(width* getRATIO());
int start_x=Math.round(x * getRATIO());
int start_y=Math.round(y * getRATIO());
StaticLayout staticLayout=new StaticLayout(textString, Paint, width-start_x*,
Alignment.ALIGN_NORMAL, 1.5f, 0.0f, false); //绘制的位置
canvas.translate(start_x, start_y);
staticLayout.draw(canvas);
}