// Hiermit kann man Teile einer Form ausdrucken, z.B. eine Grafik,
// welche nur auf die Form gezeichnet wurde
(es könnte sich aber an der Stelle
// auch ein TImage befinden)
. Als Beispiel wird angenommen, dass sich die
// Grafik bei 50 und 80 Pixeln befindet und 150x150 Pixel groß ist.


// Getestet mit D4 unter XP
 

uses printers; 
 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  bm: TBitmap; 
  faktorw, faktorh: double; 
  randoben, randlinks: integer; 
begin 
// Bitmap erstellen 
  bm := TBitmap.create; 
// Bitmap bekommt die entsprechende Größe 
  bm.width := 150; 
  bm.height := 150; 
// von Form auf Bitmap (beispielsweise links = 50 und oben = 80) 
  bm.canvas.copyrect(bm.canvas.cliprect, canvas, rect(50, 80, 50 + bm.width, 
    80 + bm.height)); 
// Verhältnis Bildschirm zu Drucker errechnen 
  faktorw := getdevicecaps(printer.handle, logpixelsx) / 72; 
  faktorh := getdevicecaps(printer.handle, logpixelsy) / 72; 
// Papierränder festlegen (60 und 100 sind willkürlich gewählt) 
  randlinks := 60; // in Bildschirm-Pixeln 
  randoben := 100; // in Bildschirm-Pixeln 
  randlinks := round(randlinks * faktorw); 
  randoben := round(randoben * faktorh); 
// auf Drucker übertragen 
  printer.begindoc; 
  printer.canvas.stretchdraw(rect(randlinks, randoben, randlinks + 
    round(bm.width * faktorw), randoben + round(bm.height * faktorh)), bm); 
  printer.enddoc; 
// Bitmap freigeben 
  bm.free; 
end;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke