用Tprinter打印一张图片怎么才能在不同的打印机分辨率打出的图片大小相同?

解决方案 »

  1.   

    使用API设置Printer的Handle:SetWindowExtEx, SetViewportExtEx。
    说白了就是重新设置设备描述表的缩放行为。这种办法有点麻烦。此外还有一种方法:先把位图画到一个图元文件(TMetafile)对象上,然后再把图元文件画到打印机上,这样一来实际上就是以恒定的屏幕分辨率(通常是96dpi)来绘制位图。也能够保证图象的打印大小。
      

  2.   

    var
      mf : TMetafile;
      mc : TMetafileCanvas;
    begin
      mf := TMetafile.Create(......);
      try
        mc := TMetafileCanvas.Create(mf, 0);
        try
          mc.TextOut......
          ......
        finally
          md.Free;
        end;
        Printer.BeginDoc;
        Printer.BeginPage;
        Printer.Canvas.Draw(0, 0, mf);
        Printer.EndDoc;
      finally
        mf.Free;
      end;
    end;