如何在Canvas上以任意角度写文本?(100分)

  • 主题发起人 主题发起人 esheen
  • 开始时间 开始时间
好象有人问过这个问题.
var
r:string;
LogFont:TLogFont;
NewFont,OldFont:THandle;
begin
SetBkMode(Canvas.Handle,Transparent);
LogFont.lfHeight :=20;
LogFont.lfWidth :=10;
LogFont.lfEscapement :=900; // 这一句是要旋转的角度*10
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(100,100,'test');
SelectObject(Canvas.Handle,OldFont);
DeleteObject(NewFont);
end;

 
Town说的不错,首先要建立旋转的逻辑字体。
详细信息请到http://shrw.chn.net 去下载一个可以旋转字体的Label控件 .
 
LogFont 是有必要建立的,但可以将其赋予一个TFont之中,对于控件来说可以直接将Font属性指向该字体即可.这样可以简单一些,并可以在利用.
 
好象就是一个CFONT的角度问题,
看你是怎样选定这个角度了,
以前也有过这个问题的讨论,
好象是有关FONT的讨论。
 
esheen:快结束问题吧。
 
多人接受答案了。
 
后退
顶部