delphi Canvas的TextOut如何自动换行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi Canvas的TextOut如何自动换行?相关的知识,希望对你有一定的参考价值。
delphi Canvas的TextOut如何自动换行? 代码如何实现?
可以换行 但是我用的是copy来截取的 换行后的却出现了乱码 怎么办?
//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;
我把资料整理一下,一会儿发到我的百度空间上! 参考技术A TextOut的参数不是有3个吗?你用X,y座标控制不就可以了
TextOut(1,y1,'A')
TextOut(1,y1,'B')
......
Y1-Y2=?自己调节下,以免B覆盖A本回答被提问者和网友采纳 参考技术B 用Canvas.TextWidth(‘字’)获得一个字的字宽;
用Canvas.TextHeight(‘字’)获得一个字的字高;
用length()获得你要输出字符串的长度;
根据画布的长宽用循环来计算TextOut的x,y的坐标及每次要输出的是那几个字符(用字符拷贝函数)
注意:需要选用等宽字体才可以 参考技术C 改成:
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才行。 参考技术D 楼上的说得对,只能是使用X,Y坐标来控制了。 delphi 能自动换行的控件就那么几个大型编辑控件了。否则只能自己手动调节文本的输出位置来达到换行的目的
如何更改 TCanvas (delphi) 的 textOut 的颜色?
【中文标题】如何更改 TCanvas (delphi) 的 textOut 的颜色?【英文标题】:How can I change the color of textOut of TCanvas (delphi)? 【发布时间】:2010-08-23 13:44:30 【问题描述】:我正在使用TextOut()
在 TCanvas 上绘制文本,但我需要不同的文本颜色。
我能做什么?
【问题讨论】:
【参考方案1】:改变画布字体的颜色
Canvas.Font.Color := <whatever>;
【讨论】:
【参考方案2】:你也可以改变画布样式
Canvas.Brush.Style := bsClear;
【讨论】:
以上是关于delphi Canvas的TextOut如何自动换行?的主要内容,如果未能解决你的问题,请参考以下文章
BeginPath Textout EndPath 绘制反转文本