在 Android Canvas 上围绕字符串放置一个矩形
Posted
技术标签:
【中文标题】在 Android Canvas 上围绕字符串放置一个矩形【英文标题】:Fit a rectangle around a string on an Android Canvas 【发布时间】:2011-06-11 17:35:29 【问题描述】:所以我使用 Canvas.drawText 在 Canvas 上绘制一些字符串。问题是我想在它之前绘制一个矩形,以便文本显示在矩形的中心。但我遇到了一个真正的问题。为 drawText 提供的 x 和 y 坐标实际上不是真实文本的“左上角”角,而是在字符开始的那一行。有一个方法 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);
实际绘制的文本以 x、y 为中心。在此之前,我绘制了一个以 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 上围绕字符串放置一个矩形的主要内容,如果未能解决你的问题,请参考以下文章