// Ein Image wird ausgedruckt. X und Y stellen die Position in Pixeln
// auf dem Bildschirm dar. Da Das Schirmbild elektronisch gedehnt werden
// kann, wird das gedruckte Bild nicht immer genau der Größe auf dem
// Schirm entsprechen. Deshalb kann man mit der Variablen "scale"
// manuell ausgleichen. Da nicht auf allen Druckern "
StretchDraw"
// funktioniert, siehe
Bitmaps ausdrucken


// Getestet mit D4 unter XP

uses Printers; 
 
procedure ImageDruck(Image: TImage; x, y: integer; scale: double); 
var 
  scaleX, scaleY: double; 
  dc: HDC; 
  function rech(i: integer; scl1, scl2: double): integer; 
  begin 
    result := abs(round(i * scl1 * scl2)); 
  end; 
begin 
  dc := GetDC(0); 
  with Printer do begin 
    BeginDoc; 
    try 
      scaleX := GetDeviceCaps(Handle, logPixelsX) / 
        GetDeviceCaps(dc, logPixelsX); 
      scaleY := GetDeviceCaps(Handle, logPixelsY) / 
        GetDeviceCaps(dc, logPixelsY); 
      x := rech(x, scaleX, 1); 
      y := rech(y, scaleY, 1); 
      Canvas.StretchDraw(rect(x, y, x + rech(Image.picture.Width, scaleX, 
        scale), y + rech(Image.Picture.Height, scaleY, scale)), 
        Image.Picture.Graphic); 
    finally 
      EndDoc; 
      ReleaseDC(0, dc); 
    end; 
  end; 
end; 
 
// Beispielaufruf 
 
procedure TForm1.Button5Click(Sender: TObject); 
begin 
  ImageDruck(Image1, Image1.left, Image1.top, 1.05); 
end;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke