Печать на принтер картинки (по ширине бумаги) - Delphi
procedure TForm1.
Button1Click(Sender: TObject);
var
ScaleX, ScaleY:
Integer;
R: TRect;
// Коэффициент масштабирования
Ratio:
Extended;
begin
if not PrintDialog1.
Execute
then Exit;
Printer.
BeginDoc;
with Printer
do
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);
// Масштабирование картинки под размеры страницы принтера!!
if R.Right + 1 > PageWidth
then begin
// отношение ширины картинки к ширине страницы
Ratio:= (R.Right + 1) / PageWidth;
R.Right:= PageWidth;
R.Bottom:= Round(R.Bottom / Ratio);
end;
if R.Bottom + 1 > PageHeight
then begin
// отношение высоты картинки к высоте страницы
Ratio:= (R.Bottom + 1) / PageHeight;
R.Bottom:= PageHeight;
R.Right:= Round(R.Right / Ratio);
end;
Canvas.StretchDraw(R,
Image1.
Picture.
Graphic);
finally
EndDoc;
end;
end;
Возврат к списку