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);
与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);