1 简述

绘制文字分为三种应用场景:

  • 情况1:指定文本开始的位置
  1. 即指定文本基线位置
  2. 基线x默认在字符串左侧,基线y默认在字符串下方
  • 情况2:指定每个文字的位置
  • 情况3:指定路径,并根据路径绘制文字

下面分别细说:

文字的样式(大小,颜色,字体等)具体由画笔Paint控制,详细请会看上面基础的介绍

2 绘制

2.1 指定文本开始的位置

//从点(300,400)处开始绘制
canvas.drawText("abcdefg",300,400,mPaint);
        // 仅绘制文本的一部分// 参数start,end:指定绘制文本的位置// 位置以下标标识,由0开始//public void drawText (String text, int start, int end, float x, float y, Paint paint)//public void drawText (CharSequence text, int start, int end, float x, float y, Paint paint)// 对于字符数组char[]// 截取文本使用起始位置(index)和长度(count)//public void drawText (char[] text, int index, int count, float x, float y, Paint paint)// 实例:绘制从位置1-3的文本canvas.drawText("abcdefg",1,4,300,400,mPaint);// 字符数组情况// 字符数组(要绘制的内容)char[] chars = "abcdefg".toCharArray();// 参数为 (字符数组 起始坐标 截取长度 基线x 基线y 画笔)canvas.drawText(chars,1,3,200,500,mPaint);// 效果同上

2.2 分别指定文本的位置

使用函数

// 参数text:绘制的文本
// 参数pos:数组类型,存放每个字符的位置(坐标)
// 注意:必须指定所有字符位置public void drawPosText (String text, float[] pos, Paint paint)// 对于字符数组char[],可以截取部分文本进行绘制
// 截取文本使用起始位置(index)和长度(count)public void drawPosText (char[] text, int index, int count, float[] pos, Paint paint)// 特别注意:
// 1. 在字符数量较多时,使用会导致卡顿
// 2. 不支持emoji等特殊字符,不支持字形组合与分解

案例

        // 实例canvas.drawPosText("abcde", new float[]{100, 100,    // 第一个字符位置200, 200,    // 第二个字符位置300, 300,    // ...400, 400,500, 500}, mPaint);// 数组情况(绘制部分文本)char[] chars = "abcdefg".toCharArray();canvas.drawPosText(chars, 1, 3, new float[]{300, 300,    // 指定的第一个字符位置400, 400,    // 指定的第二个字符位置500, 500,    // 指定的第三个字符位置}, mPaint);

2.3 指定路径,并根据路径绘制文字

        // 在路径(540,750,640,450,840,600)写上"绘制图片分为:绘制矢量图(drawPicture)和 绘制位图(drawBitmap)"字样// 1.创建路径对象 当然这个应该在初始化函数那里创建Path path = new Path();// 2. 设置路径轨迹path.cubicTo(540, 750, 640, 450, 840, 600);// 3. 画路径//canvas.drawPath(path,mPaint2);// 4. 画出在路径上的字canvas.drawTextOnPath("绘制图片分为:绘制矢量图(drawPicture)和 绘制位图(drawBitmap)", path, 50, 0, mPaint);

精通Android自定义View(八)绘制篇Canvas分析之绘制文本相关推荐

  1. 精通Android自定义View(十)绘制篇Canvas分析之绘制Path

    1 Path常用方法简析 Path在2D绘图中是一个很重要的类. Path在这里可以绘制基本的图形,也可以绘制其他复杂的图形. 2 常用API解析与示例 2.1 xxxTo方法 Path类中提供了一套 ...

  2. 精通Android自定义View(九)绘制篇Canvas分析之绘制图片

    绘制图片分为:绘制矢量图(drawPicture)和 绘制位图(drawBitmap) 1 drawBitmap 1.1 基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,to ...

  3. 精通Android自定义View(十四)绘制水平向右加载的进度条

    1引言 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制三部曲综合 ...

  4. 精通Android自定义View(十二)绘制圆形进度条

    1 绘图基础简析 1 精通Android自定义View(一)View的绘制流程简述 2 精通Android自定义View(二)View绘制三部曲 3 精通Android自定义View(三)View绘制 ...

  5. 精通Android自定义View(十九)自定义圆形炫彩加载转圈效果

    1 效果 2 源码 public class JiondongView extends View {private Paint mBackgroundPaint;private float mScal ...

  6. android 自定义view 硬件加速,Android自定义View(八) -- 硬件加速

    Android自定义View(八) – 硬件加速 今天学习自定义View部分的最有一篇:硬件加速因为无法录制GIF,所以本篇内容基本为原博 本文计划根据HenCoder系列文章进行学习,所以代码风格及 ...

  7. 精通Android自定义View(十六)invalidate方法和requestLayout方法

    1 简述 requestLayout方法会导致View的onMeasure.onLayout.onDraw方法被调用:invalidate方法则只会导致View的onDraw方法被调用 2 reque ...

  8. 精通Android自定义View(十三)事件分发简述

    1 事件序列 (1)手指接触屏幕后会产生一系列事件,事件分为3种:ACTION_DOWN(手指刚刚接触屏幕).ACTION_MOVE(手指在屏幕移动).ACTION_UP(手指从屏幕松开) (2)一个 ...

  9. 精通Android自定义View(五)自定义属性值使用详情

    1 可查看Android自定义View的基本使用 1 精通Android自定义View(一)自定义控的基本使用 2 精通Android自定义View(二)自定义属性使用详解 2 string 字符串 ...

最新文章

  1. 报错:该字符串未被识别为有效的DateTime
  2. Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
  3. MMDetectionV2 + Colab
  4. php html 转xml,用PHP生成XML文档(转义字符)
  5. Codeforces Round #633 B. Edge Weight Assignment 结论题 + dp
  6. c语言去字母的其中三个,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  7. php版本kms,通过 AWS KMS API 和 AWS SDK for PHP 版本 3 使用密钥 - 适用于 PHP 的 AWS 开发工具包...
  8. Adding a view
  9. axios请求拦截器错误_React中使用高阶组件和axios的拦截器,统一处理请求失败提示...
  10. 语音助手的涅槃关头,我们应该完全抛弃屏幕还是选择“语音+图形界面”?
  11. dcpb连接mysql_MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门
  12. XMind12周的学习使用-变成厉害的人成长记录
  13. java实现国密加解密
  14. Dom4jDemo应用-保存手机信息
  15. 文件格式化输入和输出
  16. iOS系统的各种设备识别码
  17. 获取秒懂百科视频地址/获取百度百科视频地址
  18. 分析和讯博客数据访问数和评论数
  19. browserify使用手册
  20. Appuploader

热门文章

  1. CV Code | 计算机视觉开源周报20190904期
  2. Grid R-CNN解读:商汤最新目标检测算法
  3. stack java实现_java实现stack
  4. 【OpenCV】OpenCV函数精讲之 -- 多通道图像混合
  5. 复旦大学邱锡鹏教授《神经网络与深度学习》最新版!
  6. 论文 | 《深度学习系统的隐私与安全》综述论文,187篇文献总结
  7. php checkbox批量提交,jquery获取多个checkbox的值异步提交给php
  8. 写给萌新们的Python安装及环境配置(anaconda,pycharm,GPU)教程
  9. 时间序列异常检测 EGADS Surus iForest
  10. 批量读写变换图片(转)