Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
usesprinters; procedure
DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap); var
Header, Bits: Pointer; HeaderSize: DWORD; BitsSize: DWORD; begin
GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize); Header := AllocMem(HeaderSize); Bits := AllocMem(BitsSize); try
GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^); StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, DestRect.Right, DestRect.Bottom, 0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo(Header^), DIB_RGB_COLORS, SRCCOPY); finally
FreeMem(Header, HeaderSize); FreeMem(Bits, BitsSize); end
; end
; procedure
PrintImage(Image: TImage; ZoomPercent: Integer); // if ZoomPercent=100, Image will be printed across the whole page var
relHeight, relWidth: integer; begin
Screen.Cursor := crHourglass; Printer.BeginDoc; with
Image.Picture.Bitmap do
begin
if
((Width / Height) > (Printer.PageWidth / Printer.PageHeight)) then
begin
// Stretch Bitmap to width of PrinterPage relWidth := Printer.PageWidth; relHeight := MulDiv(Height, Printer.PageWidth, Width); end
else
begin
// Stretch Bitmap to height of PrinterPage relWidth := MulDiv(Width, Printer.PageHeight, Height); relHeight := Printer.PageHeight; end
; relWidth := Round(relWidth * ZoomPercent / 100); relHeight := Round(relHeight * ZoomPercent / 100); DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), Image.Picture.Bitmap); end
; Printer.EndDoc; Screen.cursor := crDefault; end
; // Example Call: procedure
TForm1.Button1Click(Sender: TObject); begin
// Print image at 40% zoom: PrintImage(Image1, 40); end
;