在 Android Canvas 上围绕字符串放置一个矩形

Posted

技术标签:

【中文标题】在 Android Canvas 上围绕字符串放置一个矩形【英文标题】:Fit a rectangle around a string on an Android Canvas 【发布时间】:2011-06-11 17:35:29 【问题描述】:

所以我使用 Canvas.drawTextCanvas 上绘制一些字符串。问题是我想在它之前绘制一个矩形,以便文本显示在矩形的中心。但我遇到了一个真正的问题。为 drawText 提供的 xy 坐标实际上不是真实文本的“左上角”角,而是在字符开始的那一行。有一个方法 Paint.getTextBounds 在要绘制的文本的 (0,0) 处返回一个“具有隐含原点”的矩形。问题是原点位于 (0,0)。该框的宽度和高度是正确的,但我不知道如何将其左上角放置在画布上绘制的字符串的左上角。我想我应该使用 FontMetrics,但由于 FontMetrics 返回的许多值都没有记录,我不确定如何将它们用于我的目的。

【问题讨论】:

【参考方案1】:

我最终做了

FontMetrics fm = new FontMetrics();
paint.setTextAlign(Paint.Align.CENTER);
paint.getFontMetrics(fm);
canvas.drawText(text, x, y + -(fm.ascent + fm.descent) / 2, paint);

实际绘制的文本以 xy 为中心。在此之前,我绘制了一个以 x 为中心的矩形,y 宽度为 paint.measureText(text)

【讨论】:

一段时间以来,我一直在努力绘制以矩形为中心的文本。非常感谢!【参考方案2】:

尝试使用

绘制矩形

canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);

【讨论】:

我认为这会奏效,尽管我最终做了另一件事也对我有用,所以现在我无法尝试看看这种方法是否有效。还是谢谢你:) 这个 x 和 y 是什么? 在此上下文中,x 和 y 是 OP 绘制文本的位置,答案是在此文本周围绘制一个框。 对此***.com/questions/25176321/…的任何解决方案

以上是关于在 Android Canvas 上围绕字符串放置一个矩形的主要内容,如果未能解决你的问题,请参考以下文章

canvas知识点

在 HTML Canvas 中绘制线条以围绕形状进行路由

在Canvas上放置.png文件的好方法?

Android 图标上面添加提醒使用Canvas绘制

如何在android中为画布中心的项目放置一个onclick事件?

Canvas中的非零围绕规则原理