Entwickler-Ecke

Windows API - Bild als Hintergrund drucken und richtig rum


jackle32 - Fr 27.12.13 17:47
Titel: Bild als Hintergrund drucken und richtig rum
Hallo zusammen,

ich bin gerad dabei mit Printer Komponenten aus der Unit "Printers" zu arbeiten.

Mit

Delphi-Quelltext
1:
printer.Canvas.Draw(200500, self.Image1.Picture.Graphic);                    

ist es ja möglich ein Bild drucken zu lassen. Das funktioniert bei mir auch schon.

Auf die gleiche Seite wie das Bild soll noch Text gedruckt werden, teilweise auch in dem Bereich wo das Bild ist. Die Reihenfolge soll sein, dass das Bild im Hintergrund ist und der Text davor liegt.
Bei meinen Versuchen liegt das Bild aber immer im Vordergrund (auch wenn das Bild vor dem Text gedruckt wird).

Kennt dafür jemand ein Lösung.

Außerdem habe ich noch das Problem wenn ich die Ausrichtung in mm machen möchte (was ich sehr bevorzuge) und


Delphi-Quelltext
1:
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);                    

verwende, steht hinterher meine Grafik auf den Kopf, da sich das Koordinatensystem auf der y-Achse ja herum dreht.
Gibt es bei "Canvas.Draw" die Möglichkeit das zu korrigieren?

Gruß,
Jack


WasWeißDennIch - Fr 27.12.13 18:35

Schau mal hier [http://delphi-treff.de/tutorials/objectpascal/drucken/koordinaten-systeme/] (insbesondere SetViewportExtEx etc.)


jackle32 - Sa 28.12.13 02:01

Danke schon mal für die Antwort. Das genannte Tutorial war genau mein Einstieg, nur leider komme ich damit nicht weiter.

Was ich auch noch in der Delphi Hilfe gefunden haben ist das hier:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
When the following mapping modes are set, calls to the SetWindowExtEx and SetViewportExtEx functions are ignored. 

MM_HIENGLISH 
MM_HIMETRIC 
MM_LOENGLISH 
MM_LOMETRIC 
MM_TEXT 
MM_TWIPS


Was mich auch durchaus verwirrt. Wenn ich das richtig verstanden habe, kann ich die Funktionen mit der Einstellung "MM_LOMETRIC" ja gar nicht nutzen!?!?

Gruß,
Jack


jaenicke - Sa 28.12.13 19:53

Für den Zweck bietet sich eher eine Reporting Lösung an. Dann kannst du dir die ganze Rechnerei mit Millimetern usw. sparen. ;-)
Je nach Delphiversion ist da auch schon etwas dabei. Außerdem gibt es kostenlose Lösungen wie diese:
http://synopse.info/forum/viewtopic.php?id=41
Und natürlich sehr gute kommerzielle Lösungen wie FastReport.


jackle32 - Mo 30.12.13 23:51

Okay danke für die Antwort.

Kannst du mir bitte noch sagen welche Bordmittel Delphi konkret mitbringt? Ich arbeite im Moment mit Delphi XE5 Starter Edition.
Lohnt FastReport für nur privaten gebraucht? Hab das jetzt schon öfter gehört, kann mir aber noch nix drunter vorstellen.

Gruß,
Jack


jaenicke - Di 31.12.13 10:24

In der Starter Edition ist FastReport nicht dabei (in allen anderen schon), in deinem Profil steht ja nur XE5. Wenn man öfter mit Ausdrucken arbeitet, macht FastReport immer Sinn. Denn die kleinste Version ist mit 79 Dollar ja sehr preiswert (die kann nur wenig mehr als die ab XE5 Pro mitgelieferte).
Und es gibt ja eine Demoversion, die du jederzeit testen kannst. Ich kann es nur empfehlen.

Es gibt aber wie gesagt auch kostenlose Alternativen, wenn auch nicht so gute.


jackle32 - Di 31.12.13 12:36

Okay danke. Werd mich da dann mal schlau machen!

Gruß,
Jack