zoukankan      html  css  js  c++  java
  • Android 使用Canvas在图片上绘制文字

    一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小 

    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
          //自定义的画笔
              TextPaint textPaint=myTextPaint();
           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); 
        }
  • 相关阅读:
    python中scipy学习——随机稀疏矩阵及操作
    ptyhon中文本挖掘精简版
    ptyhon中文本挖掘精简版
    [python] 使用scikit-learn工具计算文本TF-IDF值
    [python] 使用scikit-learn工具计算文本TF-IDF值
    python高手的自修课
    python高手的自修课
    C/C++ scanf 函数中%s 和%c 的简单差别
    Ctags基本配置
    搭建gitserver
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/6023104.html
Copyright © 2011-2022 走看看