Entwickler-Ecke

Multimedia / Grafik - Image.canvas printen


JeanvanHees - Fr 27.09.02 09:56
Titel: Image.canvas printen
Tag :wink2: leute
So mach ich's jetzt:

Quelltext
1:
Printer.Canvas.Draw(0,0,TGraphic(Mainform.Image2.Canvas));                    

Aber das geht nicht gut. :cry:
Ich habe also verschiedene sachen gezeichnet aufs canvas und die mussen geprint werden.
Später muß ich auch etwas mehr parameter beim printen angeben können;also, von wo bis wo u.s.w.


OregonGhost - Fr 27.09.02 12:10

Was funktioniert denn daran nicht?
Auf Anhieb würde ich raten, da du ein TGraphic an TCanvas.Draw übergeben musst, solltest du nicht den Canvas deines TImage konvertieren, sondern direkt das Image nehmen, also:
Zitat:

Printer.Canvas.Draw(0, 0, Mainform.Image2);

Weiß aber nicht, ob das funktioniert, ich arbeite damit nicht ;c)
Ansonsten kannst du aber doch auch alles, was du auf Image2.Canvas gezeichnet hast, auch auf Printer.Canvas zeichnen...


JeanvanHees - Fr 27.09.02 12:20

Er gibt mit die draw funktion an:
incompatible types: Timage and TGraphic;

Darum hab ich's mal mit den typecasting probiert.
Das blöde ist, in der help steht das es so gehen muß wie du sagst...aber
dan übernimmt er nicht was ich zeichne auf den canvas...ich kriege ein weisses papier...


Aya - Sa 28.09.02 03:58

Hi,

das einfachste ist einfach:

Quelltext
1:
Printer.Canvas.CopyRect(Rect(0,0,Mainform.Image2.Height,Mainform.Image2.Width),Mainform.Image2.Canvas,Rect(0,0,Mainform.Image2.Height,Mainform.Image2.Width));                    


ABER, du mußt dran denken das ein bild mit sagen wir 200x200 Pixeln auf dem ausdruck Winzig ist :)
Ein DinA4 blatt hat bei 300dpi (TintenStrahl) eine größe von 3508x2480 Pixeln... bei 600dpi (LaserDrucker) halt das doppelte... (um die größe variabel herauszubekommen kannste Printer.PageHeight und Printer.PageWidth nehmen)

Au'revoir,
Aya


JeanvanHees - Mo 30.09.02 08:50

Danke Aya aber ich krieg noch immer ein weisses papier...
Das image ist 20000*600
Ich mach es erst ganz weiß und dan zeichne ich linien und text aufs canvas...
Ich bin ziemlich ratlos und ein wenig frustriert :evil:
Ich hoffe das jemand jetzt weiß was das problem ist... :cry:


Maverick - Mo 30.09.02 13:12

Also erstmal : Das Bild is ziemlich groß, da machtWindows schon probleme: ich hab auch mal mit Bildern in der Größenordnung rumgespielt und bekam beim zeichnen schon schutzverletzungen in der dibeng.dll, und das ist ne Windows-Library, keine von Delphi.

irgendwo bei http://www.efg2.com im Computerlab gibts ne analyse über große Bitmaps in Windows.

An sonsten kann die API Bitblt bereiche von einer Canvas zur anderen kopieren, Source und Destination sind jeweils die Canvas.Handle

So kannst du ja die sachen von deiner Canvas auf die Printer.Canvas Blitten


JeanvanHees - Mo 30.09.02 14:05

:D
Danke Maverick.
Funktioniert...nur ist es superklein (1200dpi)
und die printer.PageHeight und printer.PageWidth sind read only...also die kann ich nicht ändern