Printer.BeginDoc;
Printer.Canvas.CopyRect(DestRect,Image1.Canvas,SourceRect);
Printer.EndDoc;

解决方案 »

  1.   

    楼上这样做是不行的,因为屏幕的分辨率和打印机的分辨率不一样,前者小于100,后者300以上,这样做的结果是打印的图像非常小.正确的做法是,使用TMetaFile.具体的实现online help上有说明和例子.
      

  2.   

    大家不要说得太复杂。其实我的要求很简单。
    我是想直接把我在TImage上画图的做法搬到Printer上。
    我想主要的语句是基本不变的。
    只是改改比例和初始化就可以了。
    但是,究竟具体如何做呢???
      

  3.   

    我上面的方法就可以。假设你画图的方法为 Draw(ACanvas:TCanvas, Mul :Double);
    Printer.BeginDoc;
    Draw(Printer.Canvas,比例尺);
    Printer.EndDoc;
      

  4.   

    我是用:
               for i:=r.Left to r.Right do
                  drawimage.Canvas.Pixels[i,r.top+round(rkuan/2)]:=clblack;
               for i:=r.Top to r.Bottom do
                  drawimage.Canvas.Pixels[r.Left+round(rchang/2),i]:=clblack;
               drawimage.Canvas.TextOut(r.Left+round(rchang/2)+5,
                                r.top+round(rkuan/2+5*k),'O');