一个关于TCanvas的中输出中文字符串的问题:)(100分)

  • 主题发起人 主题发起人 wison
  • 开始时间 开始时间
W

wison

Unregistered / Unconfirmed
GUEST, unregistred user!
我在制作一个自定义的THintWindow Class的时候,在CANVAS中画出HINT caption的时候有些问题:
就是我计算一行中可以输出多少个中文字的时候,我是这样判断的:
var charWidth : integer;
fontCount : Integer;
charWidth := Canvas.TextWidth('一');
fontCount := lineWidth div charWidth;
然后就用copy function来复制要画出的字符串(字符串是保存在WideString中的),但是问题就是
当输出的字符串中只有中文或者一般的标点(如,.)的情况下,输出正确,但当输出字符串中有
如<<,",'"之类的符号的时候,画出来的字符就不正确,会有时空了好多个空格,又或者自动移到
下一行:),我个人总是觉得是和字符集有关,但是就是调试不出是怎么回事:),请高手们赐教,谢谢!!!!
 
可以用textwidth(实际输出的字符)来做
 
1.将字体改成: Canvas.Font.Name:='Fixedsys';
可以保证长度一样。

2.在具体写入每一行的时候判断是否超长或过短不就可以了?
if Canvas.TextWidth(LineStr)<>Length(LineStr)*charWidth then

begin

//...
end;
 
多人接受答案了。
 
后退
顶部