, kendi Font
kullanmak bir String
genişliğini mesure ve String
ait bounds
almak içinLibgdx'te dize genişliği nasıl olur? Acaba
cevap
BitmapFont API piksel < 1.5.6
benim dize genişliği nasıl biliyorum çizeceksin.
BitmapFont.getBounds(String str).width
Sen de çizim için ofset hakkı için yükseklikle alabilirsiniz. Sadece genişliği genişlikle değiştirin.
Çok satırlı metinlere ek olarak, sınırları almak için getMultiLineBounds(someString).width
kullanın.
BitmapFont API> =
1.5.7 değişti BitmapFont API şimdi sınırları almak için farklı bir yol yoktur 1.5.6:
BitmapFont.TextBounds ve getBounds yapıldı. Bunun yerine, dizeyi GlyphLayout'a verin ve genişlik ve yükseklik alanlarını kullanarak sınırları alın. Daha sonra metni aynı GlyphLayout'u BitmapFont'a geçirerek çizebilirsiniz, bu da gliflerin eskiden olduğu gibi iki kez düzenlenmesini gerektirmez.
Örnek: @Nates sorunun yanıtına göre
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
: https://stackoverflow.com/a/20759876/619673 çağıran yöntem
BitmapFont.getBounds(String str).width
her zaman doğru genişliğini döndürür! Özellikle yazı tipini yeniden kullandığınız zaman.
font.drawWrapped(spriteBatch, "text", x_pos, y_pos, your_area_for_text, BitmapFont.HAlignment.CENTER);
ise: örneğin in the center of part of view port
için metin çizmek istiyorsanız , başka bir yöntem
BitmapFont.drawWrapped (...)
Örnek kodu kullanarak bu sorunu önleyebilirsiniz UI'de kaplamalar kullanırsanız, GlyphLayout'a beslemek için doğru yazı tipini bulmak zor olur.
Bu durumda, benim için her şeyi hesaplamak için bir Atma örneğini kullanın ve ardından Etiket için genişlik isteyin.
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 ...
Eğer metnin kendini konumlandırmak istiyorsanız bu cevap değil, ama bir UI düzeni istikrarlı ve hücrelerin gerçek içeriği daha az bağımlı hale getirmek için yararlıdır.
- 1. Android'de dize genişliği nasıl alınır?
- 2. İç dize kaynak o başka bir XML dize kaynak XML dize değeri atıfta bulunmak mümkündür acaba
- 3. güvenli, acaba, iOS'ta NSString
- 4. Piksel cinsinden dize yazı tipi genişliği nasıl hesaplanır?
- 5. acaba UTHSCSA ImageTool kaynak kodunu
- 6. Metin genişliği nasıl sınırlanır
- 7. QWidget genişliği nasıl ayarlanır?
- 8. Faking max aygıt genişliği
- 9. Grafikteki çubuk genişliği nasıl düzeltilir?
- 10. Okuyucuyu genişletmek "okumam" nasıl olur?
- 11. Dize (contentOfFile) dosya neden olmasa bile neden başarısız olur?
- 12. HTML5 Kanvas ve Çizgi Genişliği
- 13. JQGrid Sütun otomatik genişliği
- 14. Tepki'deki Ekran genişliği Yerel
- 15. Özel MKOverlayView satır genişliği
- 16. matplotlib sınır genişliği
- 17. Bellek Bant Genişliği Kullanımı
- 18. C# Veritabanında sütun genişliği
- 19. Python'da bant genişliği daraltma
- 20. HTML5 tarih giriş genişliği
- 21. Uyarlamalı UICollectionView Hücre Genişliği
- 22. Chrome'da garip kenarlık genişliği davranışı - Kayan nokta kenarlığı genişliği?
- 23. dize
- 24. restrict JScrollPane görünüm genişliği
- 25. Highcharts Katı Gösterge Genişliği
- 26. viewForHeaderInSection autolayout - pim genişliği
- 27. Android iletişim genişliği
- 28. Hızda bir # kaçış nasıl olur
- 29. SSRS - Satır toplamı nasıl olur?
- 30. Satır içi elemanın genişliği nasıl ayarlanır?
Ayrıca bir çok satır metni için getMultiLineBounds (someString) .width kullanabilirsiniz. –
Teşekkürler! problem çözüldü – LeSam
Daha yeni libgdx sürümünde kullanımdan kaldırıldı. API'de bulamıyorum .... Bunu yapmanın başka bir yolu var mı? –