窗体可以直接打印,就不知道怎么直接打印控件?我用Scollbox作为容器,在Scollbox用shape画了一个图,想把Scollbox整个打印出来,但Scrollbox没有print或preview一类的方法。
   另外,好象窗体这一类的打印是1:1的,窗体有多大,打印出来就有多大,怎么才能让它自适应纸张大小呢?

解决方案 »

  1.   

    控件也是放在窗体上的啊,你可以调用Form.Canvas.CopyRect将控件的整个图像抓下来,然后打印。
    例如:var
      BMP: TBitMap;
      SR, DR: TRect;
      P: TPoint;
    begin
      BMP := TBitMap.Create;
      BMP.Width := ScrollBox1.Width;
      BMP.Height := ScrollBox1.Height;
      P := ScrollBox1.ClientToParent(Point(0, 0), Self);
      SR := Rect(P.X, P.Y, BMP.Width, BMP.Height);
      DR := Rect(0, 0, BMP.Width, BMP.Height);
      BMP.Canvas.CopyRect(DR, Canvas, SR);
      //这时候就可以打印BMP包含的图像了
      //也可以保存到文件:BMP.SaveToFile('g:\b.bmp');
      BMP.Free;
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————