我正在尝试将Nine Patch用作Libgdx Scene2d UI按钮的背景。它已经被加载,但是看起来非常丑陋。我可以看到“元数据”像素,并且它被拉伸得像普通图像一样(按钮上的文本是“Continue”):
我通过(libgdx)
![ugly image of a nine-patch button](https://istack.dev59.com/m6Prg.webp)
NinePatch
直接将.9.png
文件加载到(libgdx)NinePatchDrawable
中,如下所示:this.dialogButtonUp = new NinePatchDrawable(
new NinePatch(new Texture(Gdx.files.internal("data/button-round.9.png"))));
this.dialogButtonDown = new NinePatchDrawable(
new NinePatch(new Texture(Gdx.files.internal("data/button-round-down.9.png"))));
然后我创建一个TextButtonStyle
,用来描述按钮,并引用两个NinePatch
可绘制对象:
TextButton.TextButtonStyle buttonStyle = new TextButton.TextButtonStyle();
buttonStyle.font = aValidFontReally;
buttonStyle.fontColor = Color.BLACK;
buttonStyle.up = this.dialogButtonUp;
buttonStyle.down = this.dialogButtonDown;
buttonStyle.pressedOffsetX = -2;
我是通过一个对话框
间接地构建按钮:
new Dialog( ... ).button("Continue", null, buttonStyle);
我已检查.9.png
文件,以确保:
- 在Eclipse中刷新了资产文件
- 元数据边框像素要么完全不可见,要么完全可见为黑色
- Android的
draw9patch
工具可以加载并验证这些图像
还有其他建议需要检查或更改吗?
NinePatch.draw(...)
也看到了同样的丑陋。所以Dialog
和Button
没有搞砸它。 - P.T.NinePatch
用于后处理的纹理。创建TextureAtlas
似乎会进行处理。我没有看到任何关于“.9.png”的运行时支持,但也许我还没有找对地方... - P.T.