概述
有时会遇到这样的需求,图片上绘制文字、数字,以及两张图片合并、图片上绘制几何图案等等。实现原理都是相同的,即拷贝一份背景图片,应用 Canvas 将需要的文字或者图片绘制到背景图片上。在这里记录一个将文字绘制到图片上的效果,其他同理。
使用场景:地图的自定义覆盖物
效果图
8.JPG 9.JPG代码
public class BitmapActivity extends Activity {
private ImageView ivTuPian;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bitmap);
ivTuPian = (ImageView) findViewById(R.id.iv_tupian);
initView();
}
private void initView() {
Bitmap bitmap = setTextToImg("我是绘制上来的");
ivTuPian.setImageBitmap(bitmap);
}
/**
* 文字绘制在图片上,并返回bitmap对象
*/
private Bitmap setTextToImg(String text) {
BitmapDrawable icon = (BitmapDrawable) getResources().getDrawable(R.drawable.score_bg);
Bitmap bitmap = icon.getBitmap().copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
// 抗锯齿
paint.setAntiAlias(true);
// 防抖动
paint.setDither(true);
paint.setTextSize(200);
paint.setColor(Color.parseColor("#ff0000"));
canvas.drawText(text,(bitmap.getWidth() / 5),(bitmap.getHeight() / 2), paint);
return bitmap;
}
}
注:由代码可以看出实现起来还是比较简单的。尝试实现这种效果,可以举一反三的实现其他同理的效果。
网友评论