Ok, vielen Dank. Die offene Frage habe ich mir anscheinend schon vorher selbst beantwortet. Die größte Schrift bildet die Oberkannte, womit man nur die Höhe der der größte Schrift ermitteln muss und die dann abziehen. So kann man dann auch die Oberkannte einhalten.
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
procedure TextRect(ACanvas: TCanvas; X, Y: Integer; Txt: String);
var
Size: TSize;
begin
ACanvas.Brush.Style := bsClear;
ACanvas.Pen.Color := clRed;
Size := ACanvas.TextExtent(Txt);
ACanvas.Rectangle(Rect(X, Y, X + Size.cx, Y - Size.cy));
end;
var
d: Integer;
begin
Canvas.Font.Name := 'Arial';
Canvas.Font.Size := 28;
d := Canvas.TextHeight('X');
SetTextAlign(Canvas.Handle, TA_BASELINE);
Canvas.Font.Size := 10;
Canvas.TextOut(100, 100 + d, 'Hallo');
TextRect(Canvas, 100, 100 + d, 'Hallo');
Canvas.Font.Size := 28;
Canvas.TextOut(150, 100 + d, 'Welt');
TextRect(Canvas, 150, 100 + d, 'Welt');
Canvas.Pen.Color := clBlue;
Canvas.MoveTo(0, 100); Canvas.LineTo(300, 100);
end;
EDIT:
Und danke noch mal an MeierZwoo.