如何在矩形框内纵向输出文本,就像Word中的竖排文本框那样?

zcs_1 2003-05-20 01:32:04
如题目,谢谢!
...全文
505 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcs_1 2003-05-21
  • 打赏
  • 举报
回复
谢谢离奇的回答,现在我能够将文本纵向输出,但是还有一个折行的问题,我会慢慢解决的,如果谁有好的办法请指点,如果问题解决分数可以另加。
lili1 2003-05-20
  • 打赏
  • 举报
回复
其实关键是建立旋转字体
以当前字体为起点,可使用windows的getobject()函数,检查当前字体的Tlogfont
结构,并通过对该结构进行适当的修改来创建新的字体。

见下例:
procedure TForm1.Button1Click(Sender: TObject);
var lf:tlogfont;
tf:tfont;
begin
tf:=tfont.Create;
tf.Assign(button1.font);
getobject(tf.handle,sizeof(lf),@lf);
lf.lfEscapement:=450;
lf.lfOrientation:=450;
tf.Handle:=createfontindirect(lf);
button1.parentfont:=false;
button1.Font.Assign(tf);
tf.free;
end;

该例创建了一个新的Font,并把按钮的当前字体赋给Tfont,这将把按钮的字体所有属
性复制到这个新的Font,然后调用Windows的Getobject()函数来检索该Tfont的逻辑
字体结构,之后改变该逻辑字体结构的间隔和方向成员以使字体旋转45度,这可通过
1/10度为单位来说明角度。而后利用windows的GDI命令CreateFontIndirect()创建
一个新字体,最后释放Tfont。
并非所有的字体都可以旋转。(TrueType 字体都可旋转)。
Venda 2003-05-20
  • 打赏
  • 举报
回复
那就要自己创建字体吧!
zcs_1 2003-05-20
  • 打赏
  • 举报
回复
非常感谢风舞轻扬的回答,但是和我的意图还有差距,也是因为我没有把问题说清楚。
Word中竖排文本框中的英文单词和汉字的显示形式不同,它是整个单词合在一起纵向排列,因此每个字母的方向都做了一个顺时针90度旋转。而且在矩形框内,如果文本的长度超过了矩形的高度,还要进行折行处理,这些都无法通过上面的两种方法处理。
windindance 2003-05-20
  • 打赏
  • 举报
回复
Label.Caption := 'a'#13'b'#13;

如果要自己画:
DrawText(... , DT_WORDBREAK );

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧