Entwickler-Ecke

Multimedia / Grafik - Wie viele Pixel liegen unter der BASELINE?


Kroko - Fr 12.01.07 20:35
Titel: Wie viele Pixel liegen unter der BASELINE?
Hi,
zur Zeit gebe ich auf einem Canvas den Text wie folgt aus und möchte in ARect das gefüllte Rechteck zurückgegeben haben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure PrintText (const Ax,Ay: Integer; const ATxt: Stringvar ARect: TRect);
var
  HL: Integer;
  Hr: TRect
begin
  SetTextAlign (FCanvas.Handle,TA_BaseLine);
  SetRectEmpty(Hr);
  HL := Length (ATxt);
  Windows.DrawText(FCanvas.Handle,PChar(ATxt),Hl,Hr,DT_CALCRECT);          
  Windows.TextOut(FCanvas.Handle,Ax,Ay,PChar(ATxt),Length(ATxt));
  with ARect do
  begin
    Left := Ax;
    Bottom := Ay; // ???
    Right := Ax+Hr.Right-Hr.Left;
    Top := Bottom+Hr.Bottom-Hr.Top;
  end;
end;


Nun, wie bekomme ich heraus, wie viel von der Höhe (je nach Schriftgröße mehr ioder weniger) unter der Baseline liegt, damit ich Bottom richtig setzen kann?

Link zu dsdt.info [http://forum.dsdt.info/viewtopic.php?p=201275#201275]
Link Delphi-Praxis [http://www.delphipraxis.net/post665159.html#665159]