Title: Drawing text angled on canvas
Question: With this piece of code you can draw angled on canvas
Answer:
// this proc draws a text angled on specified canvas
procedure TextOutAngled(const Canvas: TCanvas; const X, Y: integer; const strText: string; intAngle, intFontSize: integer );
var
objLogFont: TLogFont;
fntSaveFont: TFont;
begin
// creates a new temp TFont object
fntSaveFont := TFont.Create;
fntSaveFont.Assign(Canvas.Font);
// get the font "properties"
GetObject(fntSaveFont.Handle, SizeOf(TLogFont), @objLogFont);
with objLogFont do begin
lfHeight := intFontSize * 2;
lfEscapement := intAngle * 10;
lfQuality := PROOF_QUALITY;
lfPitchAndFamily := DEFAULT_PITCH or FF_DONTCARE;
end;
with Canvas do begin
Font.Handle := CreateFontIndirect(objLogFont);
SetBkMode(Handle, TRANSPARENT);
TextOut(X, Y, strText);
Font.Assign(fntSaveFont);
end;
// destroys the "save" font
fntSaveFont.Free;
end;
{---------------------------------------------------------------------}
Sample of use:
TextOutAngled(Form1.Canvas, 200, 200, 'Sample of Angled Text', 10, 36);