1,183
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.BitBtn4Click(Sender: TObject);
var
B: TBitmap;
R: TRect;
Str: String;
begin
B:= TBitmap.Create;
ScreenShot(Left,Top,Width,Height,B);
Str:= 'D:\XyScreenShot_'+FormatDateTime('yymmddhhnnss',now)+'.BMP';
B.SaveToFile(Str);
B.LoadFromFile(Str);
//图片居中打印,HScale为屏幕、打印机比例,这里也有个问题,就是下边的第二问题
R.Left:= (Printer.PageHeight-Round(B.Width*HScale)) div 2;
R.Top:= (Printer.PageWidth-Round(B.Height*HScale)) div 2;
R.Right:= R.Left+Round(B.Width*HScale);
R.Bottom:= R.Top+Round(B.Height*HScale);
try
Printer.Orientation:= poLandscape; //横向
Printer.BeginDoc;
Printer.Canvas.StretchDraw(R,B);
Printer.EndDoc;
except
Printer.Abort;
raise;
end;
FreeAndNil(B);
end;
//获取当前打印机的分辨率
Px:=GetDeviceCaps(Printer.Handle,LOGPIXELSX);
Py:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSY)/2.54);
//根据打印机和屏幕的分辨率计算出从屏幕转换到打印机的比例
PSc:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSY)/Screen.PixelsPerInch+0.5);
这里计算出的比例,跟我自己取出Printer.Width等数据计算出的比例不一样,这又是为什么?
如果用这里计算出来的比例,打印出来的图片。。。惨不忍睹啊