sguruapp@gmail.com
facebook vk instagram Телеграм youtube

Печать на принтер картинки (по ширине бумаги) - 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;

Возврат к списку

обучись профессии будущего

Хочешь стать успешным разработчиком
приложений? Тогда добро пожаловать к нам.

обучись профессии будущего