如何任意角度绘制文字? ( 积分: 50 )

  • 主题发起人 主题发起人 jack2004
  • 开始时间 开始时间
J

jack2004

Unregistered / Unconfirmed
GUEST, unregistred user!
如题!!
 
呵呵,这个比较难
 
procedure TForm1.Button1Click(Sender: TObject);
var
LogFont: TLogFont;
begin
with Canvas do
begin
GetObject( Font.Handle, SizeOf( TLogFont ), @LogFont);
LogFont.lfEscapement:=90 * 10; //90为角度
Font.Handle := CreateFontIndirect( LogFont );
TextOut( 100, 100,'Sasdfadsf' );
end;
end;
 
刚才测试的,怎么只能90,180,270这样的角度。
 
//X, Y:位置;Angle:角度
procedure AngleTextOut(Canvas: TCanvas; const X, Y, Angle: Integer;
const Text: string);
var
NewFnt: TFont;
Lfnt: tagLOGFONTA;
begin
NewFnt := TFont.Create;
NewFnt.Assign(Canvas.Font);
GetObject(NewFnt.Handle, SizeOf(Lfnt), @Lfnt);
with Lfnt do
begin
lfEscapement := 10 * Angle;
lfOrientation := 0;
end;
if GetBkMode(Canvas.Handle) = OPAQUE then
SetBkMode(Canvas.Handle, TRANSPARENT);
NewFnt.Handle := CreateFontIndirect(Lfnt);
Canvas.Font.Assign(NewFnt);
NewFnt.Free;
Canvas.TextOut(X, Y, Text);
end;
 
后退
顶部