所以这里有两个例子,我在表中有两个图像,但大小不同。一个使用Texture的示例和另一个使用多边形的示例之间的唯一区别。
纹理 x.png为130x130,y.png为75x75
Image image1 = new Image(new TextureRegionDrawable(new TextureRegion(new Texture("y.png"))));
Image image2 = new Image(new TextureRegionDrawable(new TextureRegion(new Texture("x.png"))));
mainTable.setFillParent(true);
mainTable.row();
mainTable.add(image1).uniform().fill();
mainTable.add(image2).uniform();
mainTable.pack();
输出:
正如您所看到的那样,第一张图片被填充到第二张图片,但是在底座中它们的尺寸不同。
多边形
Image image1 = new Image(new PolygonRegionDrawable(new PolygonRegion(getSolidTexture(Color.YELLOW), new float[]{0, 0, 75, 75, 0, 75, 75, 0}, new short[]{0, 1, 2, 0, 3, 2})));
Image image2 = new Image(new PolygonRegionDrawable(new PolygonRegion(getSolidTexture(Color.YELLOW), new float[]{0, 0, 130, 130, 0, 130, 130, 0}, new short[]{0, 1, 2, 0, 3, 2})));
mainTable.setFillParent(true);
mainTable.row();
mainTable.add(image1).uniform().fill();
mainTable.add(image2).uniform();
mainTable.pack();
,其中
public TextureRegion getSolidTexture(Color color) {
Pixmap p = new Pixmap(1, 1, RGBA8888);
p.setColor(color);
p.fill();
Texture t = new Texture(p);
return new TextureRegion(t);
}
输出中:
如您所见,第一张图像未填充到第二张图像尺寸。
实际上为什么多边形的行为不一样?
答案 0 :(得分:0)
正如我所知,PolygonRegion的大小必须与顶点大小相同,之后才会缩放。
在我的代码中,我只需要将顶点数组缩放到与pixmap相同的大小。
float[] vertices1 = {0, 0, 75, 75, 0, 75, 75, 0};
vertices1 = GeometryUtils.scale(vertices1, 0, 0, 1, 1);
Image image1 = new Image(new PolygonRegionDrawable(new PolygonRegion(resources.getSolidTexture(Color.YELLOW), vertices1, new short[]{0, 1, 2, 0, 3, 2})));
float[] vertices2 = {0, 0, 130, 130, 0, 130, 130, 0};
vertices2 = GeometryUtils.scale(vertices2, 0, 0, 1, 1);
Image image2 = new Image(new PolygonRegionDrawable(new PolygonRegion(resources.getSolidTexture(Color.YELLOW), vertices2, new short[]{0, 1, 2, 0, 3, 2})));
mainTable.setFillParent(true);
mainTable.row();
mainTable.add(image1).uniform().fill();
mainTable.add(image2).uniform();
mainTable.pack();
至少在我看来,我根本无法在谷歌或互联网上找到这些信息。绝望后,我在调试时找到了解决方案。