drawText详解

简介: Canvas 作为绘制文本时,是以基线为基准绘制的,不是左上角 FontMetrics对象 它以四个基本坐标为基准,分别为: ・FontMetrics.top ・FontMetrics.
Canvas 作为绘制文本时,是以基线为基准绘制的,不是左上角

FontMetrics对象
它以四个基本坐标为基准,分别为:
・FontMetrics.top
・FontMetrics.ascent
・FontMetrics.descent

・FontMetrics.bottom

ascent和top都为负数,因为向下为Y轴正方向

示例:

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


目录
相关文章
|
8月前
|
Kubernetes 负载均衡 调度
使用kubeadm快速安装Kubernetes v1.28.2
使用kubeadm快速安装Kubernetes v1.28.2
2052 0
|
8月前
|
自然语言处理 API 开发者
Agent实操(五):如何在本地/云端创建并发布更定制化的Agent
利于模型的微调优化,工具的本地部署,魔改代码
Agent实操(五):如何在本地/云端创建并发布更定制化的Agent
Elasticsearch系列——全文搜索控制精准度
Elasticsearch系列——全文搜索控制精准度
|
8月前
|
XML Java 测试技术
Maven特点、作用、生命周期
Maven是一个项目管理工具,主要用于Java项目的管理。它提供了项目对象模型(POM),一个用于描述项目的基础、源代码、构建配置、依赖关系等信息的XML文件,使得开发人员能够使用统一的方式来构建和管理项目。
119 1
|
机器学习/深度学习 人工智能 缓存
地址标准化服务AI深度学习模型推理优化实践
深度学习已在面向自然语言处理等领域的实际业务场景中广泛落地,对它的推理性能优化成为了部署环节中重要的一环。推理性能的提升:一方面,可以充分发挥部署硬件的能力,降低用户响应时间,同时节省成本;另一方面,可以在保持响应时间不变的前提下,使用结构更为复杂的深度学习模型,进而提升业务精度指标。
|
机器学习/深度学习 传感器 算法
【配电网】基于MATLAB的Newton-Raphson法电力系统潮流计算
【配电网】基于MATLAB的Newton-Raphson法电力系统潮流计算
|
存储 弹性计算 固态存储
手把手教你如何选配阿里云数据库RDS MySQL
如何选配阿里云数据库RDS MySQL?作为世界上最受欢迎的开源数据库之一,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,MySQL广泛应用于各类应用场景。本文中详细解释选配阿里云数据库的流程。
手把手教你如何选配阿里云数据库RDS MySQL
|
10天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201862 13
对话 | ECS如何构筑企业上云的第一道安全防线