delphi Canvas的TextOut如何自动换行?

delphiCanvas的TextOut如何自动换行?代码如何实现?可以换行但是我用的是copy来截取的换行后的却出现了乱码怎么办?... delphi Canvas的TextOut如何自动换行? 代码如何实现?
可以换行 但是我用的是copy来截取的 换行后的却出现了乱码 怎么办?
展开
 我来答
JIAOYIYAN
2011-02-17 · TA获得超过104个赞
知道小有建树答主
回答量:103
采纳率:0%
帮助的人:111万
展开全部
用textout自动换行非常麻烦,你在写代码控制偏移量时要考虑到字体,字体大小等因素。如果你的要求是直岩举接在画布上绘出可以自动换行的文字,你可以考虑用DrawText来实现,下面是实现代码:
//delphi XE中编译通过
procedure TForm1.Button1Click(Sender: TObject);
const
str = '汉字进行自动换行汉字进行自动换行汉字进行自动换行';
var
R: TRect;
begin
with R do
begin
Left := 10;
Top := 10;
right := 50;
end;
DrawText(Form1.Canvas.Handle, str, Length(str), R, DT_WORDBREAK);
//DT_WORDBREAK表手拦示自动换行。left与right来确定矩形的宽度,根据文字的多少,可以自动调//整矩形的高度粗薯碧
end;

我把资料整理一下,一会儿发到我的百度空间上!
百度网友0951d78
推荐于2018-04-10 · TA获得超过1451个赞
知道小有建树答主
回答量:1727
采纳率:0%
帮助的人:1256万
展开全部
TextOut的参码举唤数不是有3个吗?你用X,y座标控制不就答羡可以了
TextOut(1,迟凯y1,'A')
TextOut(1,y1,'B')
......

Y1-Y2=?自己调节下,以免B覆盖A
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdszyc927
2011-02-17 · 超过18用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:40.4万
展开全部
用Canvas.TextWidth(‘字’)获得一个字的字纤核宽;
用Canvas.TextHeight(‘字’)获得一个字的字高;
用length()获得你要输出字符串枯瞎的长度;
根据画布的长宽用循环来计算TextOut的x,y的坐标及每次要输出的是那几个字符(用字符拷贝函数)毁败掘

注意:需要选用等宽字体才可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
辛芷雁
2011-02-17 · TA获得超过115个赞
知道答主
回答量:175
采纳率:0%
帮助的人:98.3万
展开全部
改成州颤皮:
var
z:Int64;
begin
z:=1234567890;
canvas.textout (20,20,IntToStr(z));
end;
有三个错,第一个是canvas这句要包进begin……end里面。第二个,z是integer类型,须要转换成string类型才能被textout使用。第三,对于integer来说,洞搜1234567890这个数字太大了,所以你册差要把var声明里面的z声明为Int64才行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mole0550
2011-02-17 · 超过19用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:50万
展开全部
楼上的说得对,只能是使用X,Y坐标来控制了。 delphi 能自动换行的控件就那么几个大型编辑控闷闭件了。否则没伍只蚂察裂能自己手动调节文本的输出位置来达到换行的目的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式