Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Schiftgröße so einstellen, dass sie 6 Pixel hoch ist. (https://www.delphipraxis.net/74329-schiftgroesse-so-einstellen-dass-sie-6-pixel-hoch-ist.html)

xZise 1. Aug 2006 13:48


Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Wie kann ich das so berechnen, das die Schriftgröße so groß ist, dass ein Buchstabe ('A') <= 6 Pixel hoch ist?

Bisher habe ich diese Variante... Allerdings gibts das Probelm das TextHeight mindestens 13 Pixel sind:
Delphi-Quellcode:
Best := false;
FontHeight := 18;
while not Best do begin
  dec(FontHeight);
  iLetter.Canvas.Font.Height := FontHeight;
  lFontHeight.Caption := IntToStr(FontHeight);
  lFontHeight.Repaint;
  label3.Caption := IntToStr(iLetter.Canvas.TextHeight('A'));
  label3.Repaint;
  if iLetter.Canvas.TextHeight('A') <= 6 then begin
    Best := true;
  end else begin
    iLetter.Canvas.TextOut(0,0, 'A');
    iLetter.Repaint;
  end;
  Sleep(60);
end;
(Das sleep ist nur da um das sichtbar zu machen.

himitsu 1. Aug 2006 14:07

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Nicht alle Fonts lassen sich immer (auf diese Weise) frei scalieren ... es gibt bestimmte Werte/Grenzen, die eingehalten werden müssen.

Versuch es mal mit "Small Fonts" als Schriftart?

xZise 1. Aug 2006 14:09

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Hmmm... Immernoch 13 PX Höhe... Kann es sein, dass dies nicht stimmt?

Helmi 1. Aug 2006 14:14

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Hallo,

bei einer Schrift (also Font) kannst du die Größe (Size) in Punkte (Pixel) angeben.

z. B.
Delphi-Quellcode:
  Label1.Font.Size := 6;

xZise 1. Aug 2006 14:15

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Das macht keinen unterschied... Ich verstehe auch gar nicht, wo der Unterschied ist?

himitsu 1. Aug 2006 14:16

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Zitat:

Mit Height können Sie die Höhe einer Schrift in Pixel festlegen. Bei einem negativen Wert wird der interne Abstand über den einzelnen Textzeilen nicht berücksichtigt. Bei einem positiven Wert für Height errechnet sich die Höhe aus der Schrifthöhe plus dem internen Abstand.
Das sollte demnach ausreichen.
Delphi-Quellcode:
iLetter.Canvas.Font.Height := -6;
Ich glaub TextHeight gibt aber die Höhe inklusive des internen Abstands (also dem Freiraum, welcher zwischen 2 Zeilen ist) aus.

xZise 1. Aug 2006 14:18

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Dann müsste man ja einfach diesen Freiraum abziehen oder ist der nicht konstant?

Der_Unwissende 1. Aug 2006 14:20

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
[EDIT]
Sorry, mein Browser hat hier was gecached und nun ja, ist schon alles gesagt
[/EDIT]

himitsu 1. Aug 2006 14:22

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
Der hängt von der Schriftgröße ab.

Große Schrift = großer Zwischenraum
und umgekehrt

xZise 1. Aug 2006 14:27

Re: Schiftgröße so einstellen, dass sie 6 Pixel hoch ist.
 
1. Mir fällt gerade auf das bei .Height < -8 nix mehr passiert
2. Ich habe es mit Height/Size +/- probiert

Immer nur 13 :( (welches aber auch mit 1 zusammenhängen könnte... (getestet mit MS Sans Serif (o.ä.))


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 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