2

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

//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());

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

4

1 回答 1

1

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

于 2010-07-28T03:01:49.027 回答