【发布时间】:2014-04-16 14:11:48
【问题描述】:
我用
Printer.BeginDoc;
Printer.Canvas.Font := Self.Font;
Printer.Canvas.Font.Name := 'Verdana';
Printer.Canvas.Font.Size := 10;
Printer.Canvas.TextOut(10,0,'Nom : Prenom Nom');
Printer.Canvas.TextOut(10,100,'Nom2 : Prenom2 Nom2');
Printer.EndDoc;
现在我想做一些预览,所以决定做一个预览表格。 但是,我必须将字体大小设置得更大。
Form2.Canvas.Font := Self.Font;
Form2.Canvas.Font.Name := 'Verdana';
Form2.Canvas.Font.Size := 25; //<=======Have to set this a lot higher to resemble what is on the print.
Form2.Canvas.TextOut(10,0,'Nom : Prenom Nom');
Form2.Canvas.TextOut(10,100,'Nom2 : Prenom2 Nom2');
为什么字体大小在 printer.canvas 和 form.canvas 上的行为不一样?
【问题讨论】:
-
您到底期待什么?你有什么体验?
-
我期待如果我打印到画布上,它是屏幕上的画布还是打印机画布都没有关系。所以我期待展示同样的效果。 (屏幕有点大,因为屏幕作为打印机的分辨率较低)
-
当我决定提出这个问题时,我找到了解决方案:Form2.Canvas.Font.PixelsPerInch:=Printer.Canvas.Font.PixelsPerInch(在 begindoc 初始化打印机之后。)跨度>
-
@PieterB 在屏幕上,你通常有 96DPI IIRC,而在打印机上 300+
-
@ComputerSaysNo 是的,我很困惑,因为当打印像素、形状或在画布上定位时,Delphi 采用绝对值,而与 dpi 无关,但字体会根据 dpi 自动缩放。
标签: windows delphi printing delphi-7