如何在屏幕上书写出沿有一定角度的文字(50分)

  • 主题发起人 主题发起人 blue_tear
  • 开始时间 开始时间
B

blue_tear

Unregistered / Unconfirmed
GUEST, unregistred user!
首先我有一条斜线
我要沿着这条线写一段文字,告诉我,我将如何做?
 
使用 TLogFont结构,然后自己计算角度。
 
采用控件,可以自定义角度来写,比如说 AHM 控件集就含有这种控件
 
procedure TForm1.Button1Click(Sender: TObject);
var
r:string;
LogFont:TLogFont;
NewFont,OldFont:THandle;
begin
SetBkMode(Canvas.Handle,Transparent);
LogFont.lfHeight :=60;
{lfHeight指定以逻辑单位标定的字体高度,取值可为
正负或零,对于需要随意定义字体高度的情况下通常取负值,以保证获得实际尺寸的字
体。}
LogFont.lfWidth :=30;
{lfWidth用于指定字体的平均宽度,由于Windows系统
下的大多数字体都是比例字体因而采用平均宽度这个表示方法。若指定为0,则系统会自
动根据适当的比例自动处理宽度。}
LogFont.lfEscapement :=400;
{指定输出方向与当前坐标系X轴之间的以十分之
一度为单位的角度,这里就是40度了。}
LogFont.lfWeight :=0;
LogFont.lfItalic :=0;
LogFont.lfUnderline :=0;
LogFont.lfStrikeOut :=0;

LogFont.lfCharSet :=DEFAULT_CHARSET;

r :='宋体'#0;
move(r[1],LogFont.lfFaceName[0],length(r)+1);
NewFont :=CreateFontIndirect(LogFont);
OldFont :=SelectObject(Canvas.Handle,NewFont);
Canvas.TextOut(10,200,'测试字体');{输出内容是“测试字体”}
SelectObject(Canvas.Handle,OldFont);{用完以后还要还原字体}
DeleteObject(NewFont);
end;
 
wjiachun的方法比我的详细,分给他。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
538
import
I
后退
顶部