Android 使用Canvas在图片上绘制文字的方法

 更新时间:2018年01月22日 10:19:55   作者:s1986q  
下面小编就为大家分享一篇Android 使用Canvas在图片上绘制文字的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

【Android】Android中 Paint 字体、粗细等属性的一些设置

在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体:

Paint mp = new paint();
mp.setTypeface(Typeface.DEFAULT_BOLD)

常用的字体类型名称还有:

* Typeface.DEFAULT //常规字体类型

* Typeface.DEFAULT_BOLD //黑体字体类型

* Typeface.MONOSPACE //等宽字体类型

* Typeface.SANS_SERIF //sans serif字体类型

* Typeface.SERIF //serif字体类型

除了字体类型设置之外,还可以为字体类型设置字体风格,如设置粗体:

Paint mp = new Paint();
Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD);
p.setTypeface( font );

常用的字体风格名称还有:

* Typeface.BOLD //粗体

* Typeface.BOLD_ITALIC //粗斜体

* Typeface.ITALIC //斜体

* Typeface.NORMAL //常规

但是有时上面那些设置在绘图过程中是不起作用的,所以还有如下设置方式:

Paint mp = new Paint();
mp.setFakeBoldText(true); //true为粗体,false为非粗体
mp.setTextSkewX(-0.5f);  //float类型参数,负数表示右斜,整数左斜
mp.setUnderlineText(true); //true为下划线,false为非下划线
mp.setStrikeThruText(true); //true为删除线,false为非删除线

Paint常用的方法还有:

mp.setTextSize(); //设置字体大小,int型,如12
mp.setStrokeWidth(w); //设置线宽,float型,如2.5f,默认绘文本无需设置(默认值好像为0),但假如设置了,再绘制文本的时候一定要恢复到0

说明:对于中文粗体的设置,好像只能通过setFakeBoldText(true)来实现,尽管效果看起来不是很实在(字体中空效果)。实际发现,最后绘制的效果与手机硬件也有些关系,比如前面的绘图测试程序.

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

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); 
 }

以上这篇Android 使用Canvas在图片上绘制文字的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android设计模式之适配器(Adapter)模式

    Android设计模式之适配器(Adapter)模式

    这篇文章主要介绍了Android设计模式之适配器(Adapter)模式,以源码解析的方式分析适配器模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android开发实现Fragment监听返回键事件功能的方法

    Android开发实现Fragment监听返回键事件功能的方法

    这篇文章主要介绍了Android开发实现Fragment监听返回键事件功能的方法,结合实例形式分析了Android使用Fragment监听并屏蔽返回键按钮的实现方法与相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • Android获取手机号码和运营商信息的方法

    Android获取手机号码和运营商信息的方法

    这篇文章主要介绍了Android获取手机号码和运营商信息的方法,以实例形式完整讲述了获取手机号码和运营商信息的技巧,代码中包含完整的注释说明,需要的朋友可以参考下
    2015-01-01
  • Android Rsa数据加解密的介绍与使用示例

    Android Rsa数据加解密的介绍与使用示例

    RSA是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。想起自己曾经使用过的Rsa非对称加密算法,闲下来总结一下。方便自己和大家以后使用的时候参考借鉴。下面来一起看看吧。
    2016-09-09
  • Android利用Intent实现读取图片操作

    Android利用Intent实现读取图片操作

    这篇文章主要为大家详细介绍了Android利用Intent实现读取图片操作的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 详解Android应用沙盒机制

    详解Android应用沙盒机制

    这篇文章主要介绍了Android应用沙盒机制的相关资料,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-04-04
  • Android Volley框架使用方法详解

    Android Volley框架使用方法详解

    这篇文章主要为大家详细介绍了Android Volley框架使用方法,从网络请求和图片加载两大方面进行分析,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧
    2017-03-03
  • Android性能优化及性能优化工具

    Android性能优化及性能优化工具

    这篇文章主要给大家分享的是Android性能优化及性能优化工具,下面文字会围绕Android性能优化的相关资料详细的展开具体内容,需要的朋友可以参考一下,希望对大家有所帮助
    2021-11-11
  • native.js获取手机硬件基本信息实例代码android版

    native.js获取手机硬件基本信息实例代码android版

    本文为大家分享了native.js获取手机硬件基本信息实例代码android版包括手机MAC地址,手机内存大小,手机存储空间大小,手机CPU信息等手机硬件基本信息
    2018-09-09

最新评论