1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
C_pouce_mm=25.4
FXPixelsParPouce:=GetDeviceCaps(Printer.Handle,LOGPIXELSX);
FYPixelsParPouce:=GetDeviceCaps(Printer.Handle,LOGPIXELSY);
FNonImprimableHorizPixelsX:=GetDeviceCaps(Printer.Handle,PHYSICALOFFSETX);
FNonImprimableHorizPixelsY:=GetDeviceCaps(Printer.Handle,PHYSICALOFFSETY);
function TPrinterInfo.Millimetres2PixelsX(Millims: integer): integer;
begin
result := Trunc(Millims / (C_pouce_mm / XPixelsParPouce));
end;
function TPrinterInfo.Millimetres2PixelsY(Millims: integer): integer;
begin
result := Trunc(Millims / (C_pouce_mm / YPixelsParPouce));
end;
procedure PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap);
var
BitmapHeader: pBitmapInfo;
BitmapImage : POINTER;
HeaderSize : DWORD; // Use DWORD for D3-D5 compatibility
ImageSize : DWORD;
begin
GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
GetMem(BitmapHeader, HeaderSize);
GetMem(BitmapImage, ImageSize);
trey
GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
StretchDIBits(Canvas.Handle,
DestRect.Left, DestRect.Top, // Destination Origin
DestRect.Right - DestRect.Left, // Destination Width
DestRect.Bottom - DestRect.Top, // Destination Height
0, 0, // Source Origin
Bitmap.Width, Bitmap.Height, // Source Width & Height
BitmapImage,
TBitmapInfo(BitmapHeader^),
DIB_RGB_COLORS,
SRCCOPY)
finally
FreeMem(BitmapHeader);
FreeMem(BitmapImage)
end;
Application.ProcessMessages;
end {PrintBitmap}; |
Partager