API函数DrawText的换行输出文本问题!!!!
我用
DrawText(Canvas.Handle, PChar(PBottomCaption), -1, ARect,
DT_WORDBREAK or DT_CENTER or DT_VCENTER);
输出的文本可以换行显示,但是为什么他不会居中呢,我用以下:
DrawText(Canvas.Handle, PChar(PTopCaption), -1, Rect,
DT_CENTER or DT_SINGLELINE or DT_VCENTER);
可以居中,但是它只是单行显示,我现在想可以换行显示,有没有其他办法?
DrawText的uFormat参数是用于设置文本输出位置,DT_CENTER or DT_VCENTER这两个应该
是居中输出,但是一加上DT_WORDBREAK就不行了,这是不是DrawText的一个Bug呢?
高手请教!!!!!!!!
问题点数:50、回复次数:8Top
1 楼godear()回复于 2005-06-02 17:59:16 得分 0
这是api, 不是delphi的问题吧, 实在不行, 只有自己先截断了Top
2 楼lingbin(吴斌)回复于 2005-06-03 11:10:34 得分 0
to godear():
现在不是不可以换行,是不可以居中的问题.
现在只可以左右居中,不可以上下居中,意思是说输出的文本是在顶部的,不会居中到中间.Top
3 楼kongguangming(Fly)回复于 2005-06-03 11:32:45 得分 0
多行形式无法居中Top
4 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2005-06-03 15:42:21 得分 50
没有问题啊,下面的代码可以在Image控件上面换行输出文本:
procedure TForm1.Button1Click(Sender: TObject);
var
PBottomCaption : string;
ARect : TRect;
begin
with Arect do
begin
Left := 0;
Right := Image1.Width;
Top := 0;
Bottom := Image1.Height;
end;
PBottomCaption := 'Sets tab stops. Bits 15–8 (high-order byte of the low-order word) of the uFormat parameter specify the number of characters for each tab. The default number of characters per tab is eight. The DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP';
DrawText(Image1.Canvas.Handle, PChar(PBottomCaption), -1, ARect,
DT_WORDBREAK or DT_CENTER or DT_VCENTER);
end;Top
5 楼g961681(技术庸人(情商太低))回复于 2005-06-03 16:03:44 得分 0
这好象是API的问题,没办法!Top
6 楼lingbin(吴斌)回复于 2005-06-03 16:36:05 得分 0
to TechnoFantasy(冰儿马甲www.applevb.com):
现在不是不可以换行是不可以居中啊,老大.Top
7 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2005-06-05 15:26:19 得分 0
我的是即可以换行也可以居中。Top
8 楼lingbin(吴斌)回复于 2005-06-12 15:06:40 得分 0
to TechnoFantasy(冰儿马甲www.applevb.com) :
不会吧,我的怎么不可以呢,那你可不可以把你的代码贴出来一下.Top




