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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!