【问题标题】:My text bounding rectangle我的文本边界矩形
【发布时间】:2011-04-09 00:59:45
【问题描述】:

从下面的代码中,我们可以得到文本的边框:

Graphics2D twoD = (Graphics2D) g;
FontRenderContext frc = twoD.getFontRenderContext();
Rectangle2D textBound = myFont.getStringBounds(myText, frc);

但是在核心java教科书中,它说

矩形的原点位于 字符串的基线和顶部 矩形的 y 坐标为 否定的。

这是什么意思,为什么顶部的 y 坐标是负数?

高度赞赏对此概念的任何进一步澄清?

谢谢

【问题讨论】:

    标签: java swing graphics java-2d


    【解决方案1】:

    当您测量文本时,没有关于在哪里绘制文本的概念。所以他们做出了一些武断的决定,但我认为点 (0, 0) 位于文本的基线,在第一个字符的左侧是明智的决定。

    这很好,因为如果你要说

    void drawSomeText(Graphics g, String sample) {
        g.drawString(sample, 0, 0);
    }
    

    它会适合测量文本告诉您的框。

    鉴于文本的上升越来越负,而下降占据正的y空间。

    【讨论】:

    • 感谢您的回复,我知道现在可以随意绘制文本了,但是为什么您说下降者占据正 x 空间,而不是 y 空间只是低于基线。
    • +1 API note 调用这些基线相对坐标
    • FontMetrics的图也不错。
    • 没关系 MeBigFatGuy,非常感谢您的解释
    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2013-02-24
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多