它可能有不同数量的顶点。目前我只是将它作为具有透明背景的纹理添加到舞台上。如果我有很多这样的线条,它在地图册上需要相当多的空间。所以我想用libGDX以编程方式绘制这些多边形链。我没有太多时间和意愿编写自己的库来实现这一点,所以我对一些现有的解决方案感兴趣。两个问题:
答案 0 :(得分:1)
对于这种情况,我认为this可能是最好的方法,但请记住,使用OpenGL with Stage并不是最简单的解决方法......
另一方面,更容易,但可能不是那么美丽"也没有更快的解决方法,可以使用TextureRegionDrawable,并对线路径中的每个点进行缩放,旋转和移动。
我写了一个小班,至少作为参考,它需要一些修饰,特别是角落。
public class LineDrawer extends Actor {
private Array<Vector2> path;
private float thickness;
private Image image;
public LineDrawer(Array<Vector2> path, float thickness, TextureRegionDrawable drawable) {
this.path = path;
this.thickness = thickness;
this.image = new Image(drawable);
this.image.setOrigin(Align.left);
}
@Override
public void draw(Batch batch, float parentAlpha) {
float dst, angle;
Vector2 pointA, pointB;
for (int i = 0; i < path.size - 1; i++) {
pointA = path.get(i);
pointB = path.get(i + 1);
dst = pointA.dst(pointB);
angle = MathUtils.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180f / MathUtils.PI;
image.setSize(dst, thickness);
image.setPosition(pointA.x, pointA.y, Align.left);
image.setRotation(angle);
image.draw(batch, parentAlpha);
}
}
}