Print Bitmap/ru
From Lazarus wiki
Jump to navigationJump to search
│
English (en) │
français (fr) │
русский (ru) │
Как отправить изображение на принтер
// uses Printers; // необходимо подключить модуль
var
Scale :LongInt;
begin
with Printer do
begin
BeginDoc;
Scale := Min(
Printer.PageWidth div Image1.Picture.Bitmap.Width,
Printer.PageHeight div Image1.Picture.Bitmap.Height);
Printer.Canvas.StretchDraw(
Rect(0, 0, Image1.Picture.Bitmap.Width*Scale, Image1.Picture.Bitmap.Height*Scale),
Image1.Picture.Bitmap);
EndDoc;
end;
end;
Печать jpeg картинки с масштабированием через Bitmap на лист А4
// uses Printers; // необходимо подключить модуль
procedure PrintImage(Image: TImage);
var
TempImageBMP: Graphics.TBitmap;
TempImageJPEG: TImage;
ScaleX, ScaleY: Double;
RectLeft,RectTop,RectRight,RectBottom: Integer;
begin
TempImageBMP := Graphics.TBitmap.Create;
TempImageBMP.Assign(Image.Picture.Graphic);
TempImageJPEG := TImage.Create(Self);
TempImageJPEG.Picture.Bitmap := TempImageBMP;
Printer.BeginDoc;
// Расчет соотношение сторон
ScaleX := Printer.PageWidth / TempImageJPEG.Picture.Bitmap.Width;
ScaleY := Printer.PageHeight / TempImageJPEG.Picture.Bitmap.Height;
RectLeft:=0;
RectTop:=0;
RectRight := trunc(TempImageJPEG.Picture.Bitmap.Width * scaleX);
RectBottom := trunc(TempImageJPEG.Picture.Bitmap.Height * scaleY);
Printer.Canvas.StretchDraw(
Rect(RectLeft,RectTop,RectRight,RectBottom),
TempImageJPEG.Picture.Bitmap);
Printer.EndDoc;
TempImageBMP.Free;
TempImageJPEG.Free;
end;