这是因为打印机的每英寸分辨率比屏幕高,因此在屏幕上显示的图形,如果用同样的点数在打印机上输出,其大小必然比屏幕上用Canvas直接画的图形小。解决的办法是首先读出打印机的分辨率,然后根据打印机和屏幕分辨率的差别,对Canvas中各点的位置乘以一个缩放因子,再输出到打印机。

解决方案 »

  1.   

    Screen Resolution 一般應為72dpi, 而打印機最少也是由300dpi開始
      

  2.   

    这个问题在DELPHI开发人员指南一书中有解答。
      

  3.   

    你可以查一下Windows API函数GetDeviceCaps的帮助。
    我印象中应该是有两个参数。第一个参数是设备的句柄,直接用打印机的句柄就可以了。第二个参数是需要取得的设备能力类型,用PHISCALRESX和PHISCALRESY可以取得设备的分辨率(可能是这样拼写的,我记不太清楚了,自己找一下)。
    注意纵和横方向的分辨率可能是不一致的。