java - 如何获得转换文本的边界框(java)?

标签 java user-interface swing text bounding-box

目前我有一个文本对象,我需要确定它的边界。我曾经使用图形对象来获取我试图绘制的文本的字体规范,但由于我添加了旋转对象的功能(可能还有更多),我需要一种更好的方法来获取该对象的边界。我已经看过多个地方,但到目前为止还没有什么真正对我有用。这是我最近的尝试:

//This is the bounding box edges 0: left, 1: right 2: top 3: bottom  
int toReturn[] = new int[4];
//this.transform is the AffineTransform for the text Object(currently only
//rotated)
FontRenderContext frc = new FontRenderContext(this.transform,true,false);
TextLayout tl = new TextLayout(this.typedText,this.font,frc);
Rectangle2D bb = tl.getBounds();
toReturn[0] = (int)(bb.getX());
toReturn[1] = (int)(bb.getX()+bb.getWidth());
toReturn[2] = (int)(bb.getY());
toReturn[3] = (int)(bb.getY()+bb.getHeight());

这是获取转换文本边界框的正确方法吗?

最佳答案

不,提供给 FontRenderContextAffineTransform “用于将打印点缩放到此 FontRenderContext 中的像素。”您应该能够使用 createTransformedShape()在边界上得到你想要的结果。

关于java - 如何获得转换文本的边界框(java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348566/

相关文章:

java - 具有对象粒度的java安全框架

java - 从线程启动 Android Activity

java - 计算字母频率,也涉及双字母

database - 以某种规范格式或 "as entered"存储电话号码更好吗?

Python 对象检查器 GUI

java - 将动态数据从位于多个 div 下的多个表中的 JSP 页面导出到 Excel

java - MigLayout:将两个JLabel放在同一行,用JTextField分隔

java - 将项目导出到 jar 文件时如何包含图标

java - 在 JPanel 中居中对齐 JLabel 中的文本时出现问题

java - 如何使用按钮作为 double 据类型将JTextField输入存储为变量?