Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Ein Bereich einer Form drucken?

  Alt 30. Apr 2006, 17:32
Also vielleicht verstehe ich dein Problem einfach nur falsch, aber worin liegt es genau?
Also ich kenne nicht mehr die Artikel der DP zum Thema ausdruck, aber um es mal kurz zu fassen, du arbeitest einfach nur mit einem Canvas. Ob dies nun von einem Drucker kommt oder nicht kann dir dank OOP vollkommen egal sein. Wie man mit einem Canvas arbeitet weißt du sicherlich aus Arbeiten mit Bitmaps (ansonsten wirst du dazu sicherlich eine Menge im Netz finden).
Wenn du die Bedienelemente nicht möchtest, dann kopier sie einfach nicht mit.
Wie du das Form kopierst denke ich weißt du schon (wenn ich dich richtig verstanden habe). Wenn du nun nicht den gesamten Bereich eines Bildes möchtest, dann gibt es die Funktion BitBlt (und viele andere), mit der kannst du den Inhalt eines Canvas auf ein anderes kopieren. Dazu übergibst du das Handle des Ziels, die Ziel X, Y Koordinaten, Breite und Höhe des Ziels, das Handle der Quelle und hier die Startkoordinaten sowie den Modus (wie kopiert wird).
Wenn du nun also weißt wie groß das zu kopierende Image (das große im Hintergrund ist) und wo dieses anfängt, kannst du dir leicht eine Bitmap erstellen, die dessen größe besitzt und den entsprechenden Ausschnitt der Form reinkopieren

Delphi-Quellcode:
var formBitmap : TBitmap;
    target : TBitmap;
begin
  // wie auch immer du dir dein Form als Bitmap holst
  formBitmap := getFormAsBitmap;
  
  // ziel mit Größe der Bitmap, auf der die kleinen liegen
  target := TBitmap.Create;
  target.Width := self.ImageBackground.Width;
  target.Height := self.ImageBackground.Height;
  
  BitBlt(target.Canvas.Handle, 0, 0, target.Width, target.Height, formBitmap.Canvas.Handle, self.ImageBackground.Left, self.ImageBackground.Top, SRCCOPY);
  // und jetzt drucken
  ...
end;
  Mit Zitat antworten Zitat