android使用Canvas在图片上绘制文字

来源:互联网 发布:java 驼峰转下划线 编辑:程序博客网 时间:2024/04/29 19:32

一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小
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(0, 0, photo.getWidth(), photo.getHeight());// 创建一个指定的新矩形的坐标      Rect dst = new Rect(0, 0, width, hight);// 创建一个指定的新矩形的坐标      canvas.drawBitmap(photo, src, dst, photoPaint);// 将photo 缩放或则扩大到dst使用的填充区photoPaint<span style="white-space:pre"></span>  //自定义的画笔      TextPaint textPaint=myTextPaint();
<span style="white-space:pre"></span>  //写入文字的位置      drawText(canvas,textPaint,str,45,hight/5,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(25 * getRATIO());     textPaint.setTextSize(TEXT_SIZE);// 字体大小      textPaint.setTypeface(Typeface.DEFAULT_BOLD);// 采用默认的宽度      textPaint.setColor(Color.argb(255,94,38,18));// 采用的颜色      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*2,                               Alignment.ALIGN_NORMAL, 1.5f, 0.0f, false);                    //绘制的位置          canvas.translate(start_x, start_y);          staticLayout.draw(canvas);     }


0 0
原创粉丝点击