求教!在TCanvas下写文字,如何实现文字旋转90度、180度或270度? (100分)

  • 主题发起人 主题发起人 记忆0109
  • 开始时间 开始时间

记忆0109

Unregistered / Unconfirmed
GUEST, unregistred user!
本人希望在画布或打印输出下,使文字旋转90度或任意度数的效果如何实现?多谢!
 
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;
 
接受答案了.
 
后退
顶部