Autor Beitrag
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 10.02.04 00:59 
Hin und wieder muß man wissen wie hoch eine Font-Schrift ist. Da gibt es eine Formel dafür. Etwas einfacher geht es über die Canvas Methode. Da wird die Höhe des Fonts zwar nicht zurückgegeben, aber zumindest wieviel Platz in der Höhe sie benötigt.

Wobei die Höhe der Schrift nur eine Nebeninformation ist. Der Tipp sagt wie man die Höhe und Breite eines Zeichens[meta]Zeichenhöhe, Zeichenbreite, Zeichen[/meta] ermittel. Die Höhe gilt dann auch für für den Font:

Benötigt werden vier Parameter:
  • Canvas auf der die Schrift ausgegeben werden soll
  • ein Zeichen
  • Variable für die Längenangabe als Rückgabewert
  • Variable für die Höhenangabe als Rückgabewert

Eine Fontangabe braucht man nicht, da sie in der Canvas bereits steht.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure CharWH(Canvas: TCanvas; Chr: Char; var Width, Height: Integer);
begin
  Width := Canvas.TextWidth(Chr);
  Height := Canvas.TextHeight(Chr);
end;


Beispiel:

Die Länge und Höhe des Zeichens "W" ermitteln:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
  Buchstabe: Char;
  W, H: Integer;
begin
  Buchstabe := 'W';
  CharWH(Canvas, Buchstabe, W, H);
  ShowMessage(Format('Buchstabe: "%s"' + ^j^j +
    'Breite: %d Pixel'+ ^j + 'Höhe: %d Pixel', [Buchstabe, W, H]));
end;



Apropos "W", oder wie die Amis sagen Double-U. Hab ihr gewusst, daß man in Indien einen BMW nicht einen Be-eM-We nennt, sondern einen Be-Em-Double-U?

Moderiert von user profile iconChristian S.: Meta-Tags und - Wörter eingefügt

_________________
Popov