文字的baseLine算法

news2024/11/27 10:38:56

 使用canvas的drawText方法时候,除了要传入画笔和text还需要传入一个x坐标和y坐标。这边的x和y坐标是Baseline的坐标。

    public void drawText(@NonNull String text, float x, float y, @NonNull Paint paint) {
        super.drawText(text, x, y, paint);
    }

 

top:是 baseLine到最高字符的最高处的距离 ps:为负值

bottom:是baseLine到最低字符的最低处的距离 ps:为正值

基线的位置:控件高度的一半+dy

所以重点就在于dy的高度怎么求? 

top为负数,bottom为正数可以把baseLine当做一个虚拟的x轴,y轴是向下的。y0,y1,y3,y4都是由这个虚拟的两个轴计算得出。比如说y1的值就是y1与baseLine的绝对值。

从图中可以得知:
dy=(top的绝对值+bottom的绝对值)的-半-bottom的位置可得:
dy=(bottom -top)/2-bottom
为什么是bottom-top?
因为top是负值bottom为正值所以绝对值之后就是bottom-top。

//dy代表的是:高度的一半到baseLine的距离
//获取文字排版信息
Paint.FontMetricsInt fontMetricsInt = mPaint.getFontMetricsInt();
int dy =(fontMetricsInt.bottom -fontMetricsInt.top)/2- fontMetricsInt.bottomint
baseLine =getHeight()/2 + dy;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1399603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序之WXML 模板语法之数据绑定、事件绑定、wx:if和列表渲染

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

消息中间件之Kafka(二)

1.Kafka线上常见问题 1.1 为什么要对topic下数据进行分区存储? 1.commit log文件会受到所在机器的文件系统大小的限制,分区之后可以将不同的分区放在不同的机器上, 相当于对数据做了分布式存储,理论上一个topic可以处理任意数量的数据2.提…

OpenHarmony 应用开发入门 (二、应用程序包结构理解及Ability的跳转,与Android的对比)

在进行应用开发前,对程序的目录及包结构的理解是有必要的。如果之前有过android开发经验的,会发现OpenHarmony的应用开发也很简单,有很多概念是相似的。下面对比android分析总结下鸿蒙的应用程序包结构,以及鸿蒙对比android的诸多…

【报错】Arco新建工程时 Error: spawnSync pnpm.cmd ENOENT

文章目录 安装环境开始安装选择技术栈选择pro项目遇到的问题 安装步骤:https://arco.design/vue/docs/pro/start 安装环境 npm i -g arco-cli开始安装 arco init hello-arco-pro选择技术栈 ? 请选择你希望使用的技术栈React❯ Vue选择pro项目 ? 请选择一个分类业…

智谱AI发布新一代国产文本生成模型:GLM-4,“宣称”性能逼近GPT-4 (怎么又是GPT )

希望别又是一个只顾着跑分数不注重性能的东西。。。 智谱AI GLM-4介绍体验网址链接:智谱AI开放平台 更多消息:AI人工智能行业动态,aigc应用领域资讯 智谱AI是一家专注于人工智能技术研发和应用的公司,致力于打造全球领先的大模型…

2024年美赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…

第二课:BERT

文章目录 第二课:BERT1、学习总结:为什么要学习BERT?预训练模型的发展历程BERT结构BERT 输入BERT EmbeddingBERT 模型构建BERT self-attention 层BERT self-attention 输出层BERT feed-forward 层BERT 最后的Add&NormBERT EncoderBERT 输…

深入剖析 Git 对象底层原理

一、引言 在我们日常使用 Git 时,通常的操作是: 在写完一段代码后,执行 git add命令,将这段代码添加到暂存区中然后再执行 git commit和 git push 命令,将 本地 Git 版本库中的提交同步到服务器中的版本库中 Git 在…

phpStorm 设置终端为git bash

环境: windows , PhpStorm 2022 为自己的终端配置git样式的使用, 默认终端样式 一、打开设置,选择git bin 二、重新打开终端 不加--login -i 的终端 加了--login -i 的终端 最重要的一点是什么,他可以像mac一样支持 ctrlv 复…

【学习记录】Ouster雷达运行fastlio提示 Failed to find match for field ‘ring‘ 的解决办法

本文仅用于个人记录。 在使用ouster雷达运行fastlio代码时,提示 Failed to find match for field ‘ring’ 但ouster雷达确实是发布了ring信息,可以从启动的rviz里面看到包括ring。 进一步检查,发现ouster对ring的定义是 uint_16t&#xf…

Redis: Redis介绍

文章目录 一、redis介绍二、通用的命令三、数据结构1、字符串类型(String)(1)介绍(2)常用命令(3)数据结构 2、列表(List)(1)介绍&…

【Linux的权限命令详解】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 shell命令以及运行原理 Linux权限的概念 Linux权限管理 一、什么是权限? 二、权限的本质 三、Linux中的用户 四、linux中文件的权限 4.1、文件访问…

Minio文件分片上传实现

资源准备 MacM1Pro 安装Parallels19.1.0请参考 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装CentOS7.9请参考 https://blog.csdn.net/qq_41594280/article/details/135420461 部署Minio和整合SpringBoot请参考 https://blog.csdn.net/…

BlueBunny:基于低功耗蓝牙的Bash bunny命令控制C2框架

关于BlueBunny BlueBunny是一款功能强大的命令控制框架,该工具基于低功耗蓝牙实现数据通信,可以帮助广大研究人员直接通过蓝牙将控制指令发送给Bash Bunny。 什么是Bash Bunny Bash Bunny是一款类似于USB Rubber Ducky的多功能USB攻击工具(…

认识并使用LlamaIndex

认识并使用LlamaIndex 一、认识LlamaIndex1、是什么2、为什么要搞Llama Index?3、怎么搞Llama Index?3.1 方案1:用你的数据对LLM进行微调(fine-tune)3.2 方案2:[检索增强生成(RAG)](…

实验六 模式对象管理与安全管理

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

ChatGPT 到 Word:使用 Writage 进行复制粘贴魔法

ChatGPT 到 Word:使用 Writage 进行复制粘贴魔法 写在前面Writage的使用 写在前面 随着ChatGPT的日益普及,越来越多的人每天依赖它来完成各种任务。无论是寻找信息、语言翻译、解决数学问题,还是精炼复杂的概念和文本,ChatGPT 都…

Redis 存在线程安全问题吗?为什么?

一个工作了 5 年的粉丝私信我。 他说自己准备了半年时间,想如蚂蚁金服,结果第一面就挂了,非常难过。 问题是: “Redis 存在线程安全问题吗?” 一、问题解析 关于这个问题,我从两个方面来回答。 第一个&a…

高效调试!利用IDEA远程Debug服务器微服务Jar,快速定位和解决代码问题!

开两个端口端口8081、8085 解释8081 服务端口 8085 远程debug监听端口 服务启动jar命令: java -agentlib:jdwptransportdt_socket,servery,suspendn,address48081 -jar test-server.jar &或者nohup nohup java -agentlib:jdwptransportdt_socket,servery,susp…

c++函数重载(同名函数)功能,区别于c语言

c可以使用同名函数,实现功能类似的多个功能 规则: ①函数名相同,但是函数的参数(形参)绝不相同 ②参数个数不同 ③参数个数相同,参数类型不同 只有返回值类型不同,不可以;只有形…