1、可以用TMetaFile来做,将打印的内容都写到metaFile中,示例:
var
MyMetaFile:TMetaFile;
begin
??//创建图元文件
MyMetafile:= TMetafile.Create;
//以打印机句柄创建图元文件画布对象(Tmetafilecanvas),
?TMetafileCanvas.Create(MyMetafile,printer.Handle);、
//在图元文件中调用你的打印程序
......
//在Image中画出图元文件
image1.Canvas.StretchDraw?(image1.canvas.cliprect?MyMetafile);
2、要想使不同打印机打出来的相片一样大,主要完成以下
(1)用GetDeviceCaps (Printer.Handle,LOGPIXELSX)获取当前打印机的水平分辨率。
var dpi,dpm:real;
??dpi:=GetDeviceCaps?(Printer.Handle,LogPixelsX);??//获取当前打印机的水平分辨率
(2)统一你的度量单位,这里用的是毫米。
??dpm:=trunc(dpi/25.4);?//算出每毫米的打印机点数。
这样单位统一后便可以在指定的位置打印了。