(十万火急)如何设置打印机的分辨率(100分)

N

netpigs

Unregistered / Unconfirmed
GUEST, unregistred user!
使用下面的代码打印图形,图形精度太差(我使用的是激光打印机),能不能通过设置分辨率来打印
uses Printers;
procedure TForm1.Button1Click(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
Printer.begin
Doc;

with Printerdo
try
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Width * ScaleX,
Image1.Picture.Height * ScaleY);
Canvas.StretchDraw(R, Image1.Picture.Graphic);

finally
EndDoc;

end;
end;
 
如果想让打印程序在任何打印机上都能正常地打印,你就必须改变你的度量单位。如果采用固定的度量,不同分辨率的打印效果是不同的。举例来讲:printer?Canvas?rectangle(0,0,360,720)在360G360的佳能4200SP上能打出一个1英寸宽、2英寸高的矩形,但在600G600的惠普6L上只能打出0?6英寸宽、1?2英寸高的矩形。使用打印机的点数做为度量单位是一个明智的选择。具体做法如下:VarPointX,PointY:integer;PointX:=GetDeviceCaps(printer?Handle,LOGPIXELSX);PointY:=GetDeviceCaps(printer?Handle,LOGPIXELSX);printer?Canvas?rectangle(0,0,PointX*1,PointY*2)这样,无论你使用什么样的打印机,都能得到一个1英寸宽、2英寸高的矩形。
[:D][:D]
 
delphi葵花宝殿!
 
顶部