关于canvas中字体的问题,紧急求救(50分)

  • 主题发起人 主题发起人 topkins
  • 开始时间 开始时间
T

topkins

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁,小弟是初学者,在进行打印操作时,发现一个奇怪的问题,当form的canvas的font
与printer的canvas的font设置相同时,得到的比例却不同,例如下面代码得到的结果是:
389##735和384##768,也就是说,在memo中显示为相同长度的两行,打印出来长度却不同,
但如果用宋体,字号用12,打印出来的确又相同。我在canon S300 和LQ1900K试过都不相同。
这和打印机分辨率应该没有关系吧。
各位富翁有何高见,让小弟用Verdana字体也能得到相同的长度。
Printer.PrinterIndex:=-1;
Printer.Canvas.Font.Name:='Verdana';
Form1.Canvas.Font.Name:='Verdana';
Printer.Canvas.Font.Size:=9;
Form1.Canvas.Font.Size:=9;
Application.MessageBox(PChar(inttostr(Form1.Canvas.TextWidth('asdhfljkhnzmxcvj;ljasl;dkjflasd;lfjaklsdjnm,zxcnv,mnzjkafhakjs'))+'##'+inttostr(Printer.Canvas.TextWidth('asdhfljkhnzmxcvj;ljasl;dkjflasd;lfjaklsdjnm,zxcnv,mnzjkafhakjs'))),'',0);
Application.MessageBox(PChar(inttostr(Form1.Canvas.TextWidth('中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民'))+'##'+inttostr(Printer.Canvas.TextWidth('中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民'))),'',0);

 
紧急求救 每人遇到过这种问题么?
 
这应当是字库的问题,不同的字库中的英文字母和汉字的比例总是有出入的,如果你将英文
字母用全角代替的话这时就一样了。.
 
中文字库就没有则个问题
 
但是打印和屏幕显示字库应该是一样的吧,那么为什么还会出这种问题呢?
用VFP打印报表时,打印出来的东西和预览的效果为什么又是一样的呢?
 
我已经解决该问题,其实换个思路,一切都解决了
 
这个中文都是方块字,每个字大小一样,所以打印机和FORM上也一样。
英文字体有可能打印机上没有对应的字体,选了一个相似的字体来代替,所以会略有差别。
不过应该很小,若不是有特殊用途,应该没问题。
 
打印驱动,系统有关!
 
后退
顶部