这段代码只打了一张白纸,为什么? (不光是怎么解决,最好能说说原理哟.) (50分)

  • 主题发起人 主题发起人 lncd
  • 开始时间 开始时间
L

lncd

Unregistered / Unconfirmed
GUEST, unregistred user!
//激光打印机。Samsung ML-4500 Series
procedure TForm1.Button2Click(Sender: TObject);
var
rect:TRect;
begin
with rectdo
begin

left:=200;
top:=200;
right:=400;
bottom:=400;
end;
printer.begin
Doc;
printer.Canvas.stretchdraw(rect,Image1.Picture.Graphic);
printer.EndDoc;
Image1.Picture.Graphic.SaveToFile('c:/aa.bmp');
end;
 
用这种方法试试,你用的是什么打印机啊!
Printer.begin
Doc;
img.picture.Bitmap.HandleType:=BMDIB;

with printerdo
begin
SetStretchBltMode(Canvas.Handle,HalfTone);
stretchblt(Canvas.Handle,0,0,printerpapersize.w,printerpapersize.h,img.Canvas.Handle,
0,0,img.Width,img.Height,srccopy);
end;
Printer.EndDoc;
end;
 
left:=200;
top:=200;
right:=200;
bottom:=200;
这哪里是矩形框,分明是一个点嘛!当然打出来是是白纸了。
是不是笔误?
 
p-ftp:
的确是笔误,已经改了。
 
可以打印出图形。只是和Pinter.PageWidth、Pinter.PageHeight相比,Rect
(200,200,400,400)太小(比如A4纸的PageWidth=4676,PageHeight=6814,打印出来只有
1cm×1cm),如果页边距设置太偏,可能就看不到了。
 
接受答案了.
 
后退
顶部