应该简单,试了好久,均没有满意的效果:
如何将Printer.canvas复制到一image的canvas上,用了copyrect不行...
还有想请教大家的是:将毫米映射到printer上的过程,如何做到在任何分辩率中都市精确?
谢谢大家!

解决方案 »

  1.   

    如下的语句
    printer.Canvas.CopyRect(rect(0,0,iWidth,iHeight),Image1.Canvas,rect(0,0,iWidth,iHeight));
    但还是不行
      

  2.   

    好象搞反了:
    Image1.Canvas.CopyRect(rect(0,0,iWidth,iHeight),printer.Canvas,rect(0,0,iWidth,iHeight));
      

  3.   

    procedure Print(PixelsPerInch: Integer);
    var
      ScaleX, ScaleY: Integer;  //**
      R: TRect;
      yw, yh: integer;
    begin
      yw := m_BitMap.Width;
      yh := m_BitMap.Height;
      with Printer do
      try
        BeginDoc;  // **
        ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
        ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
        R := Rect(0, 0, yw * ScaleX, yh * ScaleY);
        Canvas.StretchDraw(R, m_BitMap);  // **
      finally
        EndDoc;  // **
      end;
    end;
    //使用
    Print(PixelsPerInch);
      

  4.   

    printer.BeginDoc;
    printer.canvas.textout(12,12,'ssdfsdf');....
     Image1.Canvas.CopyRect(rect(0,0,200,200),printer.Canvas,rect(0,0,200,200));
     image1.canvas.Refresh;
    Printer.EndDoc;为什么在image1中仍是一张白画布???
      

  5.   

    TO: xiaoxiao197821(你的笑对我很重要
    这些代码我看过,能解释一下么,讲讲为什么?谢谢