// 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;
|