用图元文件实现打印预览的问题!(50分)

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

WFSMoon

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用图元文件来实现打印预览,打印程序是通过printer.Canvas自己画的。
我希望能将打印中的画printer.canvas的代码直接移植到画图元文件中,再把图元文件显示出来,
于是我创建了一个与打印机设备相容的TMetaFileCanvas: MFCanvas := TMetaFileCanvas.Create(MetaFile, Printer.Handle);
这样,图元文件的分辨率和每英寸象素值等都和打印机保持一致(因考虑到打印机和屏幕的不同分辨率)。
结果,在画线或矩形或圆形的几何图形时,因分辨率和打印机一致,所以预览的尺寸大小和打印实际效果一致。
[red]但打印字体时,但是问题出现了:在图元文件中的同字号的字体比打印机打印的字体小很多,甚至小的一半。
[/red][black]
用TextWidth函数发现在同字号的情况下,图元文件的字的宽度的象素值比打印机小很多。[/black]
请问哪位高手用图元文件实现过打印预览,请问这种字体大小的问题如何解决?
注意一定要实现我的初衷:printer.canvas的代码直接移植到画图元文件中,因为打印程序已经写好,不想改动~~~
分不多,但回尽力送上~~

 
MFCanvas.Font.Assign(Printer.Canvas.Font);
 
回一生中最爱,Font.Assign只是操作字体大小、字体等字体属性,而一个字的宽、高(TextWidth/TextHeight)与设备环境有关。
 
没用过MFCanvas,做过直接把屏幕上的scrollbox中的控件输出到打印机,应该是一样的。
打印机有纸的大小,屏幕上有像树的多少,有个转化关系,喳喳,输出到bitmap上应该
没问题
 
后退
顶部