Das ist jetzt aber völlig unlogisch. Wenn du schon die Graphics einbinden mußt (wegen TFont), kannst du’s auch gleich so (wie der Rest der Welt auch) machen:
Delphi-Quellcode:
function GetTextHeight(const FontName: string; const FontSize: integer;
const FontStyle: TFontStyles = []): integer;
var
Bitmap: TBitmap;
begin
// TCanvas.TextHeight gibt die Höhe der Schriftart, die Oberlänge plus der
// Unterlänge, nicht die eigentliche Höhe des angegebenen Strings zurück
Bitmap:= TBitmap.Create;
try
Bitmap.Canvas.Font.Name:= FontName;
Bitmap.Canvas.Font.Size:= FontSize;
Bitmap.Canvas.Font.Style:= FontStyle;
Result:= Bitmap.Canvas.TextHeight('Test');
finally
Bitmap.Free;
end;
end;
Und was meinst du, passiert dann "hinter den Kulissen".
Ich würde wetten, in etwa das, was in meiner Funktion gemacht wird, aber ich spare mir die Bitmap.
Mag sein, dass das Windows-intern alles ganz anders abläuft als ich es mir vorstelle, aber da habe ich keinen Einblick.