Gedrehten Text ausgeben
Mit dem TCanvas-Objekt kann man normalerweise keinen gedrehten Text ausgeben. In Verbindung mit TLogFont ist dies aber dennoch möglich.
Folgende Prozedur erwartet ein TCanvas-Objekt, die Koordinaten des linken, oberen Punktes des Textes (es von einem horizontalen Text ausgegangen), den Text selbst als String und den Grad der Drehung (z.B. 0=horizontal, 450=diagonal, 900=senkrecht, 1800=kopfüber…).
procedure TextOutAngle(const Canvas: TCanvas; X, Y: Integer; const AText: string; AAngle: Integer); var hCurFont: HFONT; LogFont: TLogFont; begin with Canvas do begin hCurFont := Font.Handle; try GetObject(Font.Handle, SizeOf(LogFont), @LogFont); LogFont.lfEscapement := AAngle; LogFont.lfOrientation := AAngle; Font.Handle: = CreateFontIndirect(LogFont); try TextOut(X, Y, AText); finally DeleteObject(Font.Handle); end; finally Font.Handle := hCurFont; end; end; end;
Folgendes Beispiel gibt in einer TPaintbox (Ereignis OnPaint) den Text ‚Textdrehung‘ in einem 45°-Winkel aus:
procedure TForm1.PaintBox1Paint(Sender: TObject); begin Paintbox1.Canvas.Font.Name:='Arial'; Paintbox1.Canvas.Font.Size:=24; TextOutAngle(Paintbox1.Canvas, 10, 90, 'Textdrehung', 450); end;
Es werden die Schrifteinstellungen des übergebenen Canvas-Objekt übernommen. Für Drehungen können nur TrueType-Schriftarten verwendet werden.
Möchten Sie mehrere gedrehte Texte ausgeben, wird bei jedem Aufruf von TextOutAngle ein neuer Font erzeugt. Sie können die Ausgabe beschleunigen, wenn Sie nach einmaliger Erzeugung des Fonts die gewünschten Texte ausgeben. Orientieren Sie sich dabei an der Prozedur TextOutAngle.