Android编程之绘制文本(FontMetrics)实现方法

作者:fengyee_zju 时间:2023-01-19 16:06:16 

本文实例讲述了Android编程之绘制文本(FontMetrics)实现方法。分享给大家供大家参考,具体如下:

Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标。

它的思路和java.awt.FontMetrics的基本相同。

FontMetrics对象

它以四个基本坐标为基准,分别为:

FontMetrics.top
FontMetrics.ascent
FontMetrics.descent
FontMetrics.bottom

该图片将如下

Android编程之绘制文本(FontMetrics)实现方法

代码如下:


Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);
textPaint.setTextSize( 35);
textPaint.setColor( Color.WHITE);
// FontMetrics对象
FontMetrics fontMetrics = textPaint.getFontMetrics();
String text = "abcdefghijklmnopqrstu";
// 计算每一个坐标
float baseX = 0;
float baseY = 100;
float topY = baseY + fontMetrics.top;
float ascentY = baseY + fontMetrics.ascent;
float descentY = baseY + fontMetrics.descent;
float bottomY = baseY + fontMetrics.bottom;
// 绘制文本
canvas.drawText( text, baseX, baseY, textPaint);
// BaseLine描画
Paint baseLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);>
baseLinePaint.setColor( Color.RED);
canvas.drawLine(0, baseY, getWidth(), baseY, baseLinePaint);
// Base描画
canvas.drawCircle( baseX, baseY, 5, baseLinePaint);
// TopLine描画
Paint topLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
topLinePaint.setColor( Color.LTGRAY);
canvas.drawLine(0, topY, getWidth(), topY, topLinePaint);
// AscentLine描画
Paint ascentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
ascentLinePaint.setColor( Color.GREEN);
canvas.drawLine(0, ascentY, getWidth(), ascentY, ascentLinePaint);
// DescentLine描画
Paint descentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
descentLinePaint.setColor( Color.YELLOW);
canvas.drawLine(0, descentY, getWidth(), descentY, descentLinePaint);
// ButtomLine描画
Paint bottomLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);
bottomLinePaint.setColor( Color.MAGENTA);
canvas.drawLine(0, bottomY, getWidth(), bottomY, bottomLinePaint);

希望本文所述对大家Android程序设计有所帮助。

标签:Android,绘制,文本
0
投稿

猜你喜欢

  • c#多线程编程基础

    2021-11-24 23:37:12
  • 教你如何用C#制作文字转换成声音程序

    2022-01-15 07:14:40
  • Android实现定时器的五种方法实例详解

    2023-11-14 07:06:04
  • Android WorkManager浅谈

    2023-03-24 11:26:46
  • spring定时任务执行两次及tomcat部署缓慢问题的解决方法

    2022-12-27 09:53:25
  • C#中程序自删除实现方法

    2021-06-01 19:47:29
  • Android Studio Menu选择菜单的建立方法

    2023-07-28 03:46:31
  • 解决spring security中遇到的问题

    2023-05-08 11:26:46
  • SpringBoot导入导出数据实现方法详解

    2023-10-03 19:47:22
  • C#利用正则判断输入是否为纯数字、容器类

    2022-10-10 03:00:39
  • Java中static关键字的作用和用法详细介绍

    2022-07-05 08:33:53
  • 分享java中设置代理的两种方式

    2023-10-28 10:48:52
  • 详解Java分布式系统中一致性哈希算法

    2022-10-11 18:01:05
  • Java操作Redis2种方法代码详解

    2022-09-10 22:58:56
  • c#操作xml文件示例

    2023-12-11 06:40:42
  • SpringBoot如何读取war包jar包和Resource资源

    2023-11-09 01:40:44
  • RecycleView实现各种尺寸图片展示

    2021-09-05 05:05:21
  • Android可筛选的弹窗控件CustomFiltControl

    2023-01-21 09:01:46
  • Java原生HttpClient的使用详解

    2022-06-04 16:29:49
  • 基于java构造方法Vector删除元素源码分析

    2023-11-25 14:54:45
  • asp之家 软件编程 m.aspxhome.com