为什么打印窗体上面的panel 在A4的纸上面 只有 A4 的 1/4 大小呢,该怎么样做 代码如下:(50分)

  • 主题发起人 主题发起人 980
  • 开始时间 开始时间
9

980

Unregistered / Unconfirmed
GUEST, unregistred user!
uses &nbsp;printers;<br>procedure TF_lzdlgj.SpeedButton8Click(Sender: TObject);<br>var<br> Bitmap: TBitmap;<br> /////////打印image<br> ScaleX, ScaleY: Integer;<br> &nbsp;R: TRect;<br> &nbsp;/////打印image<br>begin<br> Bitmap := TBitmap.Create;<br> Bitmap.Width := Panel1.Width;<br> Bitmap.Height := Panel1.Height;<br> try<br> &nbsp; Panel1.PaintTo(Bitmap.Canvas,0,0);<br> &nbsp; Bitmap.SaveToFile('c:/jjj.bmp');<br> &nbsp; //Use Bitmap Do SomeThing..<br> finally<br> &nbsp; Bitmap.Free;<br> end;<br> Image1.Picture.LoadFromFile('c:/jjj.bmp');<br> &nbsp; &nbsp; &nbsp; &nbsp; /////打印image<br> &nbsp;Printer.Canvas.Font.Size := 11;<br> &nbsp; Printer.Canvas.Font.Name := '宋体';<br> &nbsp;Printer.BeginDoc;<br> &nbsp;with Printer do<br> &nbsp;try<br> &nbsp; &nbsp;ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;<br> &nbsp; &nbsp;ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;<br> &nbsp; // R := Rect(500, 100, Image1.Picture.Width * ScaleX,<br> &nbsp; &nbsp; // Image1.Picture.Height * ScaleY);<br> &nbsp; &nbsp;R := Rect(130, 100, 2300,3000);<br> &nbsp; &nbsp;Canvas.StretchDraw(R, Image1.Picture.Graphic);<br> &nbsp;finally<br> &nbsp; &nbsp;EndDoc;<br> &nbsp;end;<br> &nbsp;/////打印image<br><br>end;<br>为什么打印窗体上面的panel 在A4的纸上面 &nbsp; 只有 A4 的 1/4 大小呢,该怎么样做<br>我不管这个panel 多大,打印在 A4 纸是正好的,不知道大家明白不<br><br>如果换个方法也可, 有个票据,界面在窗体上面画出来了 ,要就按照这个 要求打印出来,怎么做最好,省力
 
如果你想打印和屏幕一样的,你需要进行换算。<br>打印机.像素总数 =(屏幕.像素总数/ 屏幕.PixelsPerInch)*打印机.PixelsPerInch
 
to &nbsp;zywcd<br><br>哥们 能具体点不了
 
后退
顶部