Autor Téma: Vykreľovanie textu  (Přečteno 4068 krát)

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 576
  • Karma: 25
Re:Vykreľovanie textu
« Odpověď #15 kdy: 18-09-2012, 10:35:13 »
Predpokladám, že postačí, ak budem pracovať so šírkou a výškou textu a DPI ma nemusí zaujímať. Alebo sa mýlim?

Řekl bych, že ano. Čím víc DPI, tím víc Adidas. Totiž větší text. Takže pokud dáš někde písmo velikosti 14, tak to bude mít různou výšku v pixelech, podle DPI. Nechápu, proč si tu velikost nespočítáš. Takhle se ti to stejně rozsype, až třeba změníš ten text.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4721
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:Vykreľovanie textu
« Odpověď #16 kdy: 18-09-2012, 10:40:07 »
// Nechápu, proč si tu velikost nespočítáš.
Lebo treba rozmýšľať :(
Už mi je jasné, že inú možnosť nemám. Bude to komplikovanejšie, ale pôjde to.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2668
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Vykreľovanie textu
« Odpověď #17 kdy: 18-09-2012, 10:56:39 »
Predpokladám, že postačí, ak budem pracovať so šírkou a výškou textu a DPI ma nemusí zaujímať. Alebo sa mýlim?
Řekl bych, že ano.

Delphi pouziva mechanismus, ze si do .DFM zapise DPI z design time a pri konstrukci formulare v run time, pokud je sfFont, tak prepocte Font.Height v pomeru Screen.DPI  ku DFM.DPI a jestli ze se mu lisi vyska z DFM a nove vypoctena, tak prepocte i rozmery formulare. Samozrejme prepocitava pomoci MULDIV a bere v uvahu existujici velikosti rezu pisma, takze ten prepocet neni nutne linearni.

Co si pamatuju, kdyz se objevily notebooky se 120 dpi (oproti 96 dpi u desktopu), tak jsme museli u vlastnich komponent prepocitavat vsechno: tj, souradnice i velikosti - nikde nesmela zustat konstanta.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2479
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Vykreľovanie textu
« Odpověď #18 kdy: 18-09-2012, 13:50:15 »
Ještě si přihřeji vlastní polívčičku :http://delphi.cz/post/delphi-dpi-resolution.aspx včetně komentářů.
Embarcadero MVP - Czech republic

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4721
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:Vykreľovanie textu
« Odpověď #19 kdy: 18-09-2012, 14:11:43 »
Túto techniku (Scaled := True;) využívam pre celé formuláre. Ale ručne vykresľovaný text si musím obslúžiť sám. Tak isto si musím sám vyriešiť veľkosť (hlavne výšku) RadioGroup podľa počtu položiek.

Mohol by som použiť Scaled := False; ale to by bol v niektorých prípadoch horor.

Problém je v tom, že plátno má danú veľkosť a do nej musím vtrepať text. A to v podobe ak je na prvom obrázku. Viď hlavičku a prvý stĺpec tabuľky. Ináč ako zmenou veľkosti fontu to asi nepôjde. Čitateľnosť malého textu (5 - 6) je ovšem otázna.

Tá tabuľka/y je pomocná, ale pre komplexnosť ju tam chcem mať. Nech užívateľ nemusí používať normu.

Budem špekulovať ako na to. Ak si nebudem vedieť rady, tak sa ozvem. Hej, a tie konštanty mi boli jasné od samého začiatku. Už viem, že ak chcem niečo automatizovať, tak tam konštanty nemajú miesto.
« Poslední změna: 18-09-2012, 14:13:16 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4721
  • Karma: 41
    • Verze Delphi: XE7 professional
Re:Vykreľovanie textu
« Odpověď #20 kdy: 23-09-2012, 10:30:59 »
Ten správny vzorček pre mňa je "screen.PixelsPerInch / 96". Možno to niekomu pomôže.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.