7

我不知道如何管理复选框图像大小。当然,可以在我的纹理图集中创建不同大小的图像并获取合适的图像,但我不想这样做。

这是我的代码:

AtlasRegion checkboxOn = AssetsHelper.textures.findRegion("checked");
AtlasRegion checkboxOff = AssetsHelper.textures.findRegion("unchecked");
CheckBoxStyle checkBoxStyle = new CheckBoxStyle();
checkBoxStyle.font = AssetsHelper.font66yellow;
checkBoxStyle.checkboxOff = checkboxOff;
checkBoxStyle.checkboxOn = checkboxOn;
CheckBox cbSound = new CheckBox(" Sound", checkBoxStyle);

cbSound 对象没有这样的方法来调整复选框的图像,但是有方法 getImage(),但似乎也不起作用。这不起作用:

cbSound.getImage().width = 120;
cbSound.getImage().height = 120;

仅供参考:例如,当我想绘制图像时,我确实是这样的:

batch.draw(textureRegion, 0, 0, widthIwant, heightIwant);

但是在 CheckBox 类中只有这个被覆盖(不设置宽度和高度):

public void draw (SpriteBatch batch, float parentAlpha) {
    image.setRegion(isChecked ? style.checkboxOn : style.checkboxOff);
    super.draw(batch, parentAlpha);
}

问题:如何更改复选框图像的宽度和高度?

提前致谢。

4

2 回答 2

8

libgdx 小部件使用可绘制对象来绘制图像。可绘制对象会自动缩放以适合其所在的单元格。因此,要更改图像大小,请更改单元格大小:

cbSound.getCells().get(0).size(widht, height);

为了获得更好的结果,您应该为可绘制对象使用九个补丁。

于 2013-03-20T18:56:42.290 回答
0

您需要设置图像缩放类型。方法 getImageCell 也比方法 getCells().get(0) 更正确。默认为无。

CheckBox soundCB = new CheckBox("Sound", uiskin);
soundCB.getImage().setScaling(Scaling.fill);
soundCB.getImageCell().size(GameConfig.WIDTH/6);
soundCB.left().pad(PAD);
soundCB.getLabelCell().pad(PAD);
//...
content.add(soundCB).width(GameConfig.WIDTH/1.5f).row(); //add to table
于 2019-07-23T14:28:32.440 回答