Рисовать текст под любым углом
Написал Snowy
11.02.2009
procedure DrawAngledText( const ACanvas: TCanvas; const X, Y: Integer ;
const Angle: Double ; const Text: string ) ;
var
AFont: HFONT;
OFont: HFONT;
FontInfo: TLogFont;
begin
if Windows.GetObject ( ACanvas.Font .Handle , SizeOf ( FontInfo) , @FontInfo) = 0 then Exit ;
FontInfo.lfEscapement := Round ( Angle * 10 ) ;
FontInfo.lfOrientation := FontInfo.lfEscapement ;
AFont := CreateFontIndirect( FontInfo) ;
if AFont = 0 then Exit ;
OFont := Windows.SelectObject ( ACanvas.Handle , AFont) ;
ACanvas.TextOut ( X, Y, Text) ;
Windows.SelectObject ( ACanvas.Handle , OFont) ;
Windows.DeleteObject ( AFont) ;
end ; Функция принимает Canvas, на котором рисовать, координаты верхнего-левого угла первой буквы текста, угол в градусах, под которым рисовать текст и саму строку с текстом.