Druckvorschau realisieren?

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Druckvorschau realisieren?

Beitrag von MmVisual »

Hallo liebe Gemeinde,

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
Das Problem: Das Bild in TImage ist schwarz. Nichts drin. Das Div4 ist nur deshalb drin weil sowieso nicht so viele Pixel auf dem Bildschirm sind.
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
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten