Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Však to vypočítáš právě tou podmínkou. Co se ti na tom nezdá? nový
Wikan 29.08.2020 07:51
Wikan
Vždyť jsem to napsal, jestli jde vypočítat výšku textu s ohledem na šířku a podmínky se zbavit. Zají… nový
MichalDM 29.08.2020 10:01
MichalDM
Můžeš použít Math.max, ale na pozadí ta podmínka stejně bude. nový
Wikan 29.08.2020 10:25
Wikan
Chcete říct, že to nelze vypočítat nějakým výrazem? Zdá se mi to příliš jednoduché na to, aby to naš… nový
MichalDM 29.08.2020 12:30
MichalDM
Zkusil jsi ten Math.max? nový
Wikan 29.08.2020 13:24
Wikan
Ano, měl jste pravdu, ale musím použít Math.min, protože chci nastavit tu menší hodnotu. Jenže, ten… nový
MichalDM 29.08.2020 15:17
MichalDM
Chtěl jsi menší hodnotu. A 20 je méně než 4*100. Tak co se ti nezdá? nový
Wikan 29.08.2020 16:12
Wikan
Člověk je zblblý, že je šířka vždycky větší a pak to tak nastaví, i když nechtěl. Ano, parametry obd… poslední
MichalDM 29.08.2020 20:03
MichalDM

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.

var rectangle = new Rectangle(100, 20);

var text = new Text("X");
text.setFont(Font.font(Math.min(rectangle.getHeight(), rectangle.getWidth() * 4)));

System.out.println(text.getFont().getSize());

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?

Č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ě.

var rectangle = new Rectangle(20, 100);
var text = new Text("X");

text.setFont(Font.font(Math.min(rectangle.getHeight(), rectangle.getWidth() * 4)));

Každopádně díky za tu metodu. Akorát to nebylo max, ale min.

Zpět do poradny Odpovědět na původní otázku Nahoru