Java - Je možné nastavit velikost textu s ohledem na jeho maximální šířku?
Dobrý den,
Pro znázornění jsem napsal tento kód
var rectangle = new Rectangle(100, 50);
var text = new Text("X");
text.setFont(Font.font(rectangle.getHeight()));
Mám obdélník a do něho chci vložit písmeno. Velikost písmena je definována výškou obdélníku. Avšak, chci brát ohled i na šířku. Šířka písmene je 1/4 jeho výšky. V tomhle případě je 100 / 4 <= 50, takže není problém.
Avšak, co když změním obdélník na
var rectangle = new Rectangle(100, 20);
V tom případě tam musím přídat podmínku, která změní velikost písmene podle jeho šířky.
if ((rectangle.getHeight() / 4) < rectangle.getWidth()) {
text.setFont(Font.font(rectangle.getHeight() * 4));
}
Proto se chci zeptat, jestli je, prosím Vás, možné vypočítat velikost písmene s ohledem na maximální šířku a podmínky se zbavit?
Děkuji
PS. Ano, velikost textu se definuje v bodech a ne v pixelech, ale to bych teď ignoroval.
Promiňte, napsal jsem to narychlo a podmínka je špatně. Takhle je správně.
Opět připomínám, že fakt, že se velikost textu ve skutečnosti neuvádí v pixelech, teď ignoruji.
Však to vypočítáš právě tou podmínkou. Co se ti na tom nezdá?
Vždyť jsem to napsal, jestli jde vypočítat výšku textu s ohledem na šířku a podmínky se zbavit. Zajímá mě, jestli taková "rovnice" existuje?
Můžeš použít Math.max, ale na pozadí ta podmínka stejně bude.
Chcete říct, že to nelze vypočítat nějakým výrazem? Zdá se mi to příliš jednoduché na to, aby to našlo.
Zkusil jsi ten Math.max?
Ano, měl jste pravdu, ale musím použít Math.min, protože chci nastavit tu menší hodnotu.
Jenže, tenhle kód nefunguje, vždy vrátí 20.
Pokud to změním na statické hodnoty, tak to pracuje správně. Jenže, nenapadlo mě to zkoušet a podmínka se chová úplně stejně.
V čem je, prosím Vás, problém?
Chtěl jsi menší hodnotu. A 20 je méně než 4*100. Tak co se ti nezdá?
Člověk je zblblý, že je šířka vždycky větší a pak to tak nastaví, i když nechtěl. Ano, parametry obdélníku jsou zadány obráceně.
Každopádně díky za tu metodu. Akorát to nebylo max, ale min.