Zastanawiam wiedzieć, jak uzyskać szerokość mojego ciąg w pikselachJak uzyskać szerokość łańcucha w Libgdx?
Odpowiedz
BitmapFont API < 1.5.6
Do mesure szerokość String
używasz Font
i uzyskać bounds
o String
, będziesz rysować.
BitmapFont.getBounds(String str).width
można uzyskać wysokość do offsetu za prawo do rysowania też. Wystarczy zastąpić szerokość i wysokość.
Dodatkowo dla tekstów wielowierszowych użyj getMultiLineBounds(someString).width
, aby uzyskać ograniczenia.
BitmapFont API> = 1.5.6
BitmapFont API zmienione w 1.5.7 więc istnieje inny sposób, aby uzyskać granice teraz:
BitmapFont.TextBounds i getBounds są gotowe. Zamiast tego podaj ciąg GlyphLayout i uzyskaj granice, używając pól szerokości i wysokości. Następnie możesz narysować tekst, przekazując ten sam GlyphLayout do BitmapFont, co oznacza, że glify nie muszą być układane dwukrotnie, tak jak kiedyś.
Przykład:
GlyphLayout layout = new GlyphLayout(); //dont do this every frame! Store it as member
layout.setText("meow");
float width = layout.width;// contains the width of the current set text
float height = layout.height; // contains the height of the current set text
według @Nates odpowiedź: https://stackoverflow.com/a/20759876/619673 wywołanie metody
BitmapFont.getBounds(String str).width
nie zawsze zwraca właściwej szerokości! Zwłaszcza, gdy ponownie używasz czcionki. Jeśli chcesz narysować tekst np in the center of part of view port
, można uniknąć tego problemu poprzez zastosowanie innej metody
BitmapFont.drawWrapped (...)
Przykładowy kod:
font.drawWrapped(spriteBatch, "text", x_pos, y_pos, your_area_for_text, BitmapFont.HAlignment.CENTER);
If używasz skórek w interfejsie użytkownika, jest to kłopot, aby znaleźć właściwą czcionkę, która będzie podawana do GlyphLayout.
W tym przypadku używam instancji wyrzucania etykiety, aby dowiedzieć się wszystkiego dla mnie, a następnie zapytaj etykietę o szerokość.
Skin skin = getMySkin();
Label cellExample = new Label("888.88888", skin);
cellExample.layout();
float cellWidth = cellExample.getWidth();
Table table = new Table(skin);
table.defaults().width(cellWidth);
// fill table width cells ...
To nie jest odpowiedź, jeśli chcesz umieścić tekst samodzielnie, ale warto zrobić układ UI stabilny i mniej zależny od rzeczywistej zawartości komórek.
- 1. Jak uzyskać szerokość łańcucha w pikselach (/ jednostki logiczne)?
- 2. Jak obliczyć szerokość łańcucha w pikselach?
- 3. Jak obliczyć szerokość łańcucha w iText?
- 4. Jak uzyskać ciąg szerokość
- 5. Jak uzyskać długość łańcucha w Perlu?
- 6. Jak uzyskać szerokość widżetu tkintera?
- 7. Jak uzyskać szerokość elementu reagować
- 8. Jak uzyskać aktualną szerokość ekranu w CSS?
- 9. Jak uzyskać pełną szerokość w PivotItem
- 10. Jak uzyskać szerokość obramowania w jQuery/javascript
- 11. Z grubsza przybliża się szerokość łańcucha tekstu w Pythonie?
- 12. Jak uzyskać liczbę spacji przed rozpoczęciem łańcucha
- 13. Jak mogę uzyskać wysokość daszka danego łańcucha?
- 14. (Java LibGDX) Jak zmienić rozmiar moich tekstur w LibGDX?
- 15. Jak uzyskać szerokość i wysokość obrazu?
- 16. Jak uzyskać wewnętrzną szerokość i wysokość formularza
- 17. IPhone/iPad: Jak programowo uzyskać szerokość ekranu?
- 18. SVG uzyskać szerokość elementu tekstowego
- 19. Angular2 uzyskać szerokość okna onResize
- 20. Kiedy powinienem uzyskać Width Szerokość w Fragmentie
- 21. Libgdx jak odwrócić BitmapFont?
- 22. Jak mogę uzyskać podciąg łańcucha w Emacs Lisp?
- 23. GLFW uzyskać wysokość/szerokość ekranu?
- 24. Skaluj Bitmapfont w LibGDX
- 25. Podział ekranu w LibGDX
- 26. Jak uzyskać rozmiar NSString
- 27. wątki Java w libgdx
- 28. Jak uzyskać szerokość i wysokość widoku obrazu w systemie Android?
- 29. Jak uzyskać szerokość i wysokość widoku Web w Androidzie
- 30. Jak uzyskać szerokość/wysokość/długość siatki w THREE.js
Można również użyć getMultiLineBounds (someString) .width dla wielu tekstów liniowych. –
dziękuję! problem rozwiązany – LeSam
Jest przestarzały w nowszej wersji libgdx. Nie mogę go znaleźć w API .... Czy jest to inny sposób na zrobienie tego? –