Советы по Delphi


Как вывести на Canvas надпись под углом?


Nomadic советует:

Вот, взгляни.

    ...

function
CreateRotatedFont(F : TFont; Angle : Integer) : hFont;
{-create a rotated font based on the font object F} var
LF : TLogFont;

begin
FillChar(LF, SizeOf(LF), #0); with LF do begin lfHeight           := F.Height; lfWidth            := 0; lfEscapement       := Angle*10; lfOrientation      := 0; if fsBold in F.Style then lfWeight         := FW_BOLD else lfWeight         := FW_NORMAL; lfItalic           := Byte(fsItalic in F.Style); lfUnderline        := Byte(fsUnderline in F.Style); lfStrikeOut        := Byte(fsStrikeOut in F.Style); lfCharSet          := DEFAULT_CHARSET; StrPCopy(lfFaceName, F.Name); lfQuality         := DEFAULT_QUALITY; {everything else as default} lfOutPrecision     := OUT_DEFAULT_PRECIS; lfClipPrecision    := CLIP_DEFAULT_PRECIS; case F.Pitch of fpVariable : lfPitchAndFamily := VARIABLE_PITCH; fpFixed    : lfPitchAndFamily := FIXED_PITCH; else lfPitchAndFamily := DEFAULT_PITCH; end; end; Result := CreateFontIndirect(LF); end;

...

{create the rotated font} if FontAngle <&tg; 0 then Canvas.Font.Handle := CreateRotatedFont(Font, FontAngle); ...

Вращаются только векторные шрифты. [001614]



Содержание раздела