panel1.PaintTo(printer.Canvas,panel1.Top,panel2.Left);

解决方案 »

  1.   

    SetMapMode(printer.canvas.handle, mm_Lometric); //  0.1mm
    用这个试试看! 因为我也在学习这个! 如果楼主测试成功。
    请在这里留言,告诉我好吗?
      

  2.   

    to  kl2000() :
    没有成功啊!
      

  3.   

    BeginDoc;
      scaleX:=GetDeviceCaps(Handle,logPixelsX) div Screen.PixelsPerInch * 2;
      scaleY:=GetDeviceCaps(Handle,logPixelsY) div Screen.PixelsPerInch * 2;
      //Canvas.Draw(0,0,FImg.Picture.Graphic);
      Canvas.StretchDraw(Rect(FImg.Left div 2 ,FImg.Top,(FImg.Width + FImg.Left) * scaleX ,(FImg.Top + FImg.Height) * scaleY),FImg.Picture.Graphic);
      //Canvas.CopyRect(Rect(0,0,FImg.Width,FImg.Height),Canvas,Rect(0,0,PageWidth,PageHeight));
      EndDoc;
    //那你只有改变一下了! 用分辨率转换拉