Я пытаюсь использовать Nine Patch в качестве фона для кнопки интерфейса Libgdx Scene2d. Это загрузка, но это действительно уродливо. Я могу видеть «мета-данных» пикселей, а его растягиваются, как будто это просто обычный образ (текст на кнопке «Продолжить»):Загрузка изображения с девятью патчами в виде фона Libgdx Scene2d выглядит ужасно
Я загрузки .9.png
файлы непосредственно в (libgdx) NinePatchDrawable
через (libgdx) NinePatch
так:
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;
Я строй кнопки косвенно, через Dialog
поля:
new Dialog(...).button("Continue", null, buttonStyle);
Я проверил .9.png
файлы, чтобы убедиться, что:
- что файлы активы обновлены в Eclipse
- что пиксели границы метаданных либо полностью невидимы, либо полностью видимы-черные
- , что Android
draw9patch
инструмент может загрузить изображения и подтвердить их.
Любые другие предложения по проверке или изменению?
Попробуйте выполнить каждый NinePatch с помощью SpriteBatch с помощью NinePatch.draw() как который будет по крайней мере изолировать, где проблема, т. е. если она работает, то проблема не в NinePatch. –
Хороший вопрос! Я просто попробовал это, а также вижу ту же уродливость с помощью прямого 'NinePatch.draw (...)'. Таким образом, 'Dialog' и' Button' не подрывают его. –
Глядя на источник NinePatch (https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/NinePatch.java), я не думаю, что он много делает, если вы используете конструктор, который принимает один параметр Texture. Вместо этого попробуйте этот конструктор: public NinePatch (текстурная текстура, int left, int right, int top, int bottom) –