请看一下代码,如何将textout输出的文字放到放到矩型的某行的中间呢? ( 积分: 20 )

  • 主题发起人 主题发起人 lkdbdlkq
  • 开始时间 开始时间
L

lkdbdlkq

Unregistered / Unconfirmed
GUEST, unregistred user!
bmp.Width:=1024;
bmp.height:=768;
bmp.Canvas.Font.Size:=64;
bmp.Canvas.Rectangle(0,0,1024,768);
bmp.canvas.Font.Name:='宋体';
bmp.Canvas.TextOut(100,100,'我是中国人');

竖直方向的100 不用管,只是如何计算第一个100处的值,才能使’我是中国人‘在该行的中间对齐呢?注意,这里有字体大小早影响着计算结果。
 
判断字体宽度和高度,然后再计算
kfHeight:=font.height('我');
gHeight:=768-kfheight/2
gwidth:=1024-kfheight*Length('我是中国人')/2
textout(gheight,gwidth,'我是中国人');
 
用不用考虑字间距呢?
 
bmp.Width:=1024;
bmp.height:=768;
bmp.Canvas.Font.Size:=64;
bmp.Canvas.Rectangle(0,0,1024,768);
bmp.canvas.Font.Name:='宋体';
bmp.Canvas.TextOut(Round((bmp.Width-bmp.Canvas.TextWidth('我是中国人'))/2),100,'我是中国人');
// x := Round((bmp.Width-bmp.Canvas.TextWidth('我是中国人'))/2);
同样可以计算 y := Round((bmp.Height-bmp.Canvas.TextHeight('我是中国人'))/2);
 
在不同的大小的字体下,用bmp.Canvas.TextWidth得到的文本宽度是相同的吗?
 
在不同的大小的字体下,用bmp.Canvas.TextWidth得到的文本宽度不相同,所以才能够做到居中。为什么你不自己试一下呢?
 
接受答案了.
 
后退
顶部