这是我的代码
  //在设备空间映射成0.1mm
  SetMapMode(Printer.Handle , MM_LOMETRIC);
  
  with Printer do
  begin
    BeginDoc;
    Canvas.Rectangle(0, 0, 2250, 800);
    Canvas.Font.Name := '宋体';
    Canvas.Pen.Color := rgb(0, 0, 255);
    Canvas.Font.PixelsPerInch := Vdpi;
    Canvas.Font.Size:= 10;
    ... ...
    EndDoc;
  end;
是要打出一个22.5CM*8CM的矩形,
实际打出的结果是19.08CM*6.8CM。
这是怎么回事,如何得到这个比率?

解决方案 »

  1.   

    看看这个 有没有影响:TCustomForm.Scaled
    (不好意思,只是猜测)
      

  2.   

    好像是打印機PixelsPerInch有問題,
    你試一下:
    Canvas.Font.PixelsPerInch := Screen.PixelsPerInch
      

  3.   

    楼上两位说得不对,
    与TCustomForm无关;

    Canvas.Font.PixelsPerInch := Screen.PixelsPerInch
    只是使下面文字字体打出来与Canvas的字体一致。我知道打印机分辨率与Canvas的不一致,想得到比例因子
      

  4.   

    RE: zhilaohu(纸老虎) 
    可是我已经用SetMapMode(Printer.Handle , MM_LOMETRIC);
    将打印机模式映射成0.1mm了。
    那你要在纸上画1CM的线该如何写?
    这样吗?
    SetMapMode(Printer.Handle , MM_LOMETRIC);
    Printer.Canvas.MoveTo(0, 0);
    Printer.Canvas.LineTo(100,0);