Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?

这篇具有很好参考价值的文章主要介绍了Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0 前言

  Canvas.drawText(String text, float x, float y, Paint paint) 这个方法在绘制文本时是从以什么为基线向什么地方开始绘制呢,水平方向上,可以通过设置 setTextAlign(Paint.Align.??) 来设置基线在文本左边、右边或者中间。但是垂直方向上是在哪呢?

1 知道基线的位置后如何确定 Canvas.drawText 的 y 值

  假设以文本底部为基线,向上画。即如下图所示:
Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?
  按照这种说法,如果我想让文本在一个矩形中垂直方向上居中,这时,Canvas.drawText 中 y 就为 a + text.height / 2。或者是另外一种说法,a + (文本 “Text” 垂直方向上的中线与基线的距离 )
Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?
  如果不是以文本底部为基线,而假设是基线和文本有一定距离,这时 Canvas.drawText 中 y 就很好理解了。a + (文本 “Text” 垂直方向上的中线与基线的距离 )
Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?

2 如何确定基线与 Text 的位置关系

  通过 Paint.getTextBounds(String text, int start, int end, Rect rect),我们可以得到一个矩形值 rect,我们将这个矩形画出来,就比如我使用代码Paint.getTextBounds(“1”, int start, int end, Rect rect)。
Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?
Paint.getTextBounds(“*”, int start, int end, Rect rect)。
Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?
这个最小矩形就是位置就是以(0,0)为基线的结果。这个矩形与(0,0)的位置关系就是文本与基线的位置关系 这时我们要求文本 “Text” 垂直方向上的中线与基线的距离就很简单了。文章来源地址https://www.toymoban.com/news/detail-488435.html

3 垂直方向上居中方案

    String content;
    Rect textRect = new Rect();
    Paint paint = new Paint;
    paint.set....;
    paint.getTextBounds(content, 0, content.length(), textRect);
    int height = 0 - (textRect.top + textRect.bottom) / 2;
    float y = a  + height; // 这里 a 是框高度的一半
    canvas.drawText(content, x, y, textPaint);

到了这里,关于Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序 | canvas 2d篇 - 基础库 2.7.0 开始支持

    前言: 众所周知,小程序的迭代是很快的,时不时就会有文档更新。前面写了一篇小程序 | canvas篇,今天再更新一下Canvas,因为旧版canvas接口不再维护了,所以把新版canvas 2d接口记录一下: (官方更新图) 先把差异点记录下: ① wxml中的修改: 旧版:使用 canvas-id 属性唯一

    2024年02月02日
    浏览(37)
  • 芯片封装中的POD是什么意思?用在哪里

    POD: 封装外形图 在英语中的定义:Package Outline Drawing POD的含义 下图显示了英语中POD的定义之一。 以下看看实际POD的案例: T型金属圆形封装 T形金属圆形封装 TO-257金属封装 TO-257金属封装-细节图 所以,从上面示例来看,所有的芯片都会用到POD,不仅仅是封装设计阶段。 学习

    2024年02月12日
    浏览(55)
  • 大语言模型有什么缺点?AI 的边界在哪里?

    了解完原理后,我觉得有必要跟大家聊聊大语言模型的缺点,这样大家才能知道 AI 的边界在哪里,并在可控的边界内进行创新。 正如我前面提到的,当今的语言模型,即使发展了四个版本,但依然没有脱离「概率计算」,本质上来说它们的核心原理就是「利用已有的信息来

    2024年02月16日
    浏览(37)
  • 什么是金融RPA?金融RPA解决什么问题?金融RPA实施难点在哪里?

    什么是金融RPA?金融RPA,即金融领域的机器人流程自动化,是一种利用软件机器人来代替人工完成重复性劳动任务的技术。它能够通过模仿最终用户在电脑上的手动操作方式,实现自动化处理大量重复、规则明确的业务流程,如账务核对、发票处理、报表编制和账户报送等。

    2024年01月21日
    浏览(44)
  • 什么是电商RPA?电商RPA能解决什么问题?电商RPA实施难点在哪里?

    RPA机器人可以应用于各个行业和领域,例如金融、保险、制造、物流、电商等。它可以减少人工错误和重复工作,提高效率和生产力。RPA还可以在处理大量数据时加快处理速度,提供更准确和可靠的结果。此外,RPA还可以为员工提供更有价值的工作、解放他们的时间,使他们

    2024年02月11日
    浏览(34)
  • Linux教程——为什么要学Linux,它比Windows好在哪里?

    学习Linux对于计算机科学和技术领域的学生和专业人士来说,是一个非常重要的事情。Linux是一种自由和开源的操作系统,它具有许多优点和特点,使其成为一个值得学习的选择。 在本文中,将介绍一下为什么学习Linux以及它与Windows相比的优势。 Linux是一个开源操作系统,这

    2024年02月07日
    浏览(207)
  • 什么是学生机云服务器,哪里可以找到学生机云服务器?

    云服务器学生机其实是各大厂商针对在校大学生推出的,比如腾讯云的云+校园活动,还有阿里云的飞天加速计划-开发者成长计划都是针对在校大学生的,下边就详细解说一下学生云服务器! 腾讯云推出的其实不仅仅是针对学生用户的,只要是25岁以下的都是免学生认证的直

    2024年02月13日
    浏览(78)
  • mac外接硬盘在哪里打开 mac外接硬盘用什么格式

    Mac电脑具有出色的兼容性和高度的易用性,使得连接外接硬盘变得非常简单。但是,如果你不知道如何打开外接硬盘或者外接硬盘应该使用哪种格式,那么这将成为你使用Mac电脑过程中的一个难题。本篇文章将会向你介绍在Mac上如何打开外接硬盘,并讨论mac外接硬盘应该用什

    2024年02月11日
    浏览(36)
  • Web3究竟红在哪里,它的出现能为人类社会带来什么?

    文章编写 :詣周   文章整理:白泽研究院 在加密职业从业的这几年中,笔者常常在与圈外人闲聊时遇到一种情况,即旁观者着实无法理解「为什么大家关于 Web3 如此疯狂?」 虽然兴起的区块链技能、DeFi,乃至是 NFT 的热潮现已充斥在各大媒体之上,大家也不再像开始时关

    2024年01月18日
    浏览(42)
  • 单机和分布式有什么区别?分布式系统相比单机系统的优势在哪里?

    本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见《大数据理论体系》 单机系统是指只有一台计算机,所有的软件程序和数据都运行在这台计算机上。在这种情况下,所

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包