Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Schrift dynamisch vergrößern (https://www.delphipraxis.net/80146-schrift-dynamisch-vergroessern.html)

Antigo 3. Nov 2006 17:08


Schrift dynamisch vergrößern
 
Hi,
Ich schreibe grad ein Programm bei dem ich relativ viel mit canvas male. Nun möchte ich in das gemalte aber auch teilweise noch Schrift bzw. Buchstaben/Zahlen bringen. Ich habe dann beispielsweise einen Platz 50 Pixeln in Höhe und Breite und möchte da gerne eine Zahl reinschreiben. Durch ausprobieren kann ich ja rausfinden welche Schriftgröße da reinpasst, aber was mache ich, wenn ich diese Größe dynamisch halten will?
Gibt es eine andere Möglichkeit die Schriftgröße zu verändern als diese + oder - 1 zu rechen? Am liebsten wäre mir es natürlich wenn man direkt die Höhe oder Breite angeben könnte und das ganze automatisch angepasst würde.

Gibt es da irgendeinen Trick?


Vielen Dank schonmal im vorraus :)

DocE 3. Nov 2006 17:40

Re: Schrift dynamisch vergrößern
 
N'Abend Michael,

die direkte Lösung für Dein Problem habe ich zwar nicht, aber wenn ich mich nicht komplett täusche entspricht doch die Schriftgröße (Font.Size) der maximalen Höhe in Pixeln. Dann würde ich diesen Wert als Ausgangspunkt nehmen und "runterzählen", bis es auch in der Breite passt.

Grüsse
...Doc

Antigo 3. Nov 2006 17:51

Re: Schrift dynamisch vergrößern
 
Ist das so? Ich habs grad ausprobiert und hatte bei Georgia und Schriftgröße 8, 9Pixel Höhe und bei COurier New und Schriftgröße 8 , 7 Pixel ^^

aber danke schonmal für den Tipp, das ist zumindest ein Ansatz :)

edit: ich glaub ich hab was gefunden:
http://dsdt.info/tipps/?id=408

wäre dann aber auch nur trial and error, also wenn höhe zu klein dann schriftgröße+1 und so weiter -_-

Antigo 4. Nov 2006 14:28

Re: Schrift dynamisch vergrößern
 
falls es wen interessiert: ich hab das ganze jetzt folgendermassen gelöst:

Delphi-Quellcode:
//Schriftgröße festellen
    font.Name:='Courier New';

    font.Size:=1;
    repeat
      if TextHeight('0') < feldbreite - 4 then font.Size:=font.size+1
      else font.Size:=font.size-1;
    until abs(TextHeight('0') - feldbreite) <= 4;
zumindest funktioniert es so. wenn jemand etwas besseres kennt bitte her damit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz