Ich möchte eine Druckvorschau programmieren. Das Drucken selbst klappt problemlos.
Ich habe mir das einfach machen wollen, denn alles wird bereits in das Printer.Canvas gezeichnet und ich wollte diese Grafik einfach in ein TImage kopieren:
Code: Alles auswählen
If spDruckv.Down And (iPage = iDruchvPage) Then
Begin
bmp := TBitmap.Create;
bmp.Width := Printer.PageWidth;
bmp.Height := Printer.PageHeight;
r1.Left := 0; // TRect
r1.Top := 0;
r1.Bottom := bmp.Height;
r1.Right := bmp.Width;
r2.Left := 0; // TRect
r2.Top := 0;
r2.Right := Printer.PageWidth;
r2.Bottom := Printer.PageHeight;
bmp.Canvas.CopyRect(r1, Printer.Canvas, r2);
imgDruckv.Picture.Bitmap.Width := bmp.Width Div 4;
imgDruckv.Picture.Bitmap.Height := bmp.Height Div 4;
r1.Left := 0;
r1.Top := 0;
r1.Right := bmp.Width Div 4;
r1.Bottom := bmp.Height Div 4;
imgDruckv.Picture.Bitmap.Canvas.StretchDraw(r1, bmp);
bmp.Free;
If Not Assigned(Sender) Then // Seite gefunden und nicht auf Drucker
Break;
end;
: : :
If Assigned(Sender) Then
Printer.EndDoc
Else Printer.Abort; // Nichts drucken, nur Vorschau
imgDruckv.Strech := TRUE ist bereits gesetzt.
Hat der Drucker-Canvas andere Koordinaten, so dass CopyRect nicht funktioniert? Bzw. was müsste ich da rein schreiben?
Grüße Markus