Difference between revisions of "Print Bitmap/ru"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{Print_Bitmap}} == Как отправить изображение на принтер == <syntaxhighlight> // uses Printers; // необходимо подключить...")
 
Line 23: Line 23:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
 +
 +
'''Печать jpeg картинки с масштабированием через Bitmap на лист А4'''
 +
<syntaxhighlight>
 +
// 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;
 +
</syntaxhighlight>

Revision as of 12:56, 7 February 2019

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;