怎么竖着在Canvas上显示文字?(30分)

  • 主题发起人 主题发起人 icoy
  • 开始时间 开始时间
I

icoy

Unregistered / Unconfirmed
GUEST, unregistred user!
请大虾赐教。
 
用 TextOut() 控制位置。
 
位置怎么控制这文字还是横着的呀。
 




还是把字体横过来???
 
不是这样,这样就好办了。是把字横过来:(
 
可能通过一个windows API调用,把canvas翻转90度即可
 
可以自己通过创建字体的方式将输出转任意角度
 
请问driver如何创建字体?
如果把canvas旋转90度的话是不行的,因为上面还有其他内容。
 
用TlogFont,具体细节看看 Api的帮助。
 
用logFont,
将其lfEscapement设为900
 
有个这样的例程,效果如WINDOWS开始菜单上的横WINDOWS 98字样。
我没细看源码。后来也不知扔哪里了。
你再到深度历险里搜索吧。
 
用Delphi中的TFont不能实现字体的任意角度偏转,要用到API中的LOGFONT结构。

typedef struct tagLOGFONT { // lf
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;
其中
LONG lfEscapement;
是指定字体角度的参数。比如
lfEscapement = 300

在Delphi中声明用TLogFont。

procedure Form1.WildTextOut(Buf : String);
var
LF : TLOGFONT;
HFONT : THandle;
begin
with LF do begin
...
lfEscapement = 900;
...
end;
HFONT := CreateFontInDirect(LF);
hOldFont = SelectObject(Canvas.Handle,HFONT);
TextOut(Canvas.Handle,Buf);
SelectObject(Canvas.Handle,hOldFont);
end;
 
接受答案了.
 
后退
顶部