如何计算路径边界框,考虑到笔画。

4
我目前正在使用以下代码绘制一条线,并希望获得路径周围的边界框,但是如果我调用 path.getBounds() ,我会得到一个忽略笔画宽度和线接合处的边界框,因此当我的图形放置在 JViewport 中时,我的绘图的某些部分会被裁剪。如何获取真正绘制内容的边界框。
我找到的唯一解决方法是以下这个类,但是没有源代码:http://pic.dhe.ibm.com/infocenter/jviewtgo/v8r8/index.jsp?topic=%2Fcom.ibm.ilog.jviews.tgo.doc%2Fhtml%2Frefjava%2Fhtml%2Filog%2Ftgo%2Fgrprim%2Fpackage-summary.html
GeneralPath  path = new GeneralPath();
if (fPoints.size() > 0) {
    Point first = (Point)fPoints.elementAt(0);
    path.moveTo((float)first.getX(),(float) first.getY());
     for (int i = 1; i < fPoints.size(); i++) {
        Point p1 = (Point) fPoints.elementAt(i);
        path.lineTo(p1.x, p1.y);
    }
}
g2d.setStroke(new BasicStroke(lineModel.getStrokeWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND));
g2d.setColor(lineModel.getLineColor());
g2d.draw(path);
1个回答

4
我终于找到了解决方案,就是使用描边对象本身。
Stroke s = new BasicStroke(lineModel.getStrokeWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
s.createStrokedShape(path).getBounds();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接