Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Grafik drucken mit Printer.Canvas (https://www.delphipraxis.net/94315-grafik-drucken-mit-printer-canvas.html)

MW880729 19. Jun 2007 21:04


Grafik drucken mit Printer.Canvas
 
Hallo zusammen,

ich wollte eine Grafik drucken mit
uses Printers;

Printers.Canvas.Draw.......


hier mein Quellcode:

Delphi-Quellcode:
Printer.BeginDoc;
Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'MyPic.bmp');
Printer.Canvas.Draw(250, 250, Image1.Picture.Graphic);
Printer.EndDoc;
Leider wird mir das Bild nicht gezeigt,
weiss denn jemand wie ich es machen kann, dass das Bild auch wirklich gedruckt wird???

Danke schonmal!!

Gruß
Manu

bitsetter 19. Jun 2007 21:47

Re: Grafik drucken mit Printer.Canvas
 
Hallo,

wird das Bild denn wenigstens in das Image geladen?
Mit dem Code wird das Bild normalerweise nur sehr klein gedruckt (Verhältnis ~ 1/10) und ist meist gar nicht zu sehen.

MW880729 19. Jun 2007 21:57

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von bitsetter
wird das Bild denn wenigstens in das Image geladen?

Ja, es wird in das Image geladen, also dabei gibts es kein Problem

Zitat:

Zitat von bitsetter
Mit dem Code wird das Bild normalerweise nur sehr klein gedruckt (Verhältnis ~ 1/10) und ist meist gar nicht zu sehen.

Wie kann ich es denn größer drucken lassen?? Dachte es wird dann so groß gedruckt, wie es in Wirklichkeit auch ist?

Danke schonmal

Gruß
Manu

Corpsman 19. Jun 2007 21:59

Re: Grafik drucken mit Printer.Canvas
 
Dir ist Klar das du die DPI des Druckers umrechnen must ?

Probiere mal

Delphi-Quellcode:


var b:Tbitmap;
begin
b:= Tbitmap.craete;
b.loadfromfile(ExtractFilePath(Application.ExeName) + 'MyPic.bmp');
if b.width = 0 then Showmessage('Bild nicht geladen');
printer.canvas.stretchdraw(rect(0,0,printer.pagewidth,printer.pageheight),b);
Printer.enddoc
end;
das müste das Bild auf die Ganze Seite Malen.

MW880729 19. Jun 2007 22:04

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von Corpsman
Dir ist Klar das du die DPI des Druckers umrechnen must ?

Probiere mal

Delphi-Quellcode:


var b:Tbitmap;
begin
b:= Tbitmap.craete;
b.loadfromfile(ExtractFilePath(Application.ExeName) + 'MyPic.bmp');
if b.width = 0 then Showmessage('Bild nicht geladen');
printer.canvas.stretchdraw(rect(0,0,printer.pagewidth,printer.pageheight),b);
Printer.enddoc
end;
das müste das Bild auf die Ganze Seite Malen.


Auch mit diesem Quellcode bekomm ich gar kein Bild angezeigt - ich habe keine Ahnung woran das liegt....
Hat noch jemand eine Idee, die mit evtl. weiterhelfen könnte??

Danke schonmal.

Gruß
Manu

bitsetter 19. Jun 2007 22:20

Re: Grafik drucken mit Printer.Canvas
 
und hiermit?
Delphi-Quellcode:
procedure PrintImage(iLeft, iTop: integer; Img: TImage);
var
  GraphicRect: TRect;
begin
  iLeft:= iLeft* 10;
  iTop:= iTop* 10;
  ZeroMemory(@GraphicRect, SizeOf(GraphicRect));
  GraphicRect.Right:= Img.Picture.Graphic.Width;
  GraphicRect.Bottom:= Img.Picture.Graphic.Height;
  printer.begindoc;
  printer.Canvas.CopyRect(Rect(iLeft, iTop, iLeft+ GraphicRect.Right* 10, iTop+ GraphicRect.Bottom* 10), Img.Canvas, GraphicRect);
  printer.enddoc;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PrintImage(50,30,image1);
end;
EDIT: vorher müsstest du natürlich noch das Bild in das Image laden.

MW880729 19. Jun 2007 22:32

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von bitsetter
und hiermit?
Delphi-Quellcode:
procedure PrintImage(iLeft, iTop: integer; Img: TImage);
var
  GraphicRect: TRect;
begin
  iLeft:= iLeft* 10;
  iTop:= iTop* 10;
  ZeroMemory(@GraphicRect, SizeOf(GraphicRect));
  GraphicRect.Right:= Img.Picture.Graphic.Width;
  GraphicRect.Bottom:= Img.Picture.Graphic.Height;
  printer.begindoc;
  printer.Canvas.CopyRect(Rect(iLeft, iTop, iLeft+ GraphicRect.Right* 10, iTop+ GraphicRect.Bottom* 10), Img.Canvas, GraphicRect);
  printer.enddoc;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PrintImage(50,30,image1);
end;
EDIT: vorher müsstest du natürlich noch das Bild in das Image laden.


Damit gehts leider auch nicht ....

Gruß,
Manu

bitsetter 19. Jun 2007 22:44

Re: Grafik drucken mit Printer.Canvas
 
Komisch bei mir funktioniert der Code, habe ihn getestet.

MW880729 19. Jun 2007 22:49

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von bitsetter
Komisch bei mir funktioniert der Code, habe ihn getestet.

Der Code an sich funktioniert bei mir auch, nur ist im ausgedruckten Dokument kein Bild ....

Gruß,
Manu

bitsetter 19. Jun 2007 22:54

Re: Grafik drucken mit Printer.Canvas
 
Ich meine ich habe den Code mit meinem Drucker getestet und es ist auch was ausgedruckt worden.
Kannst du denn nicht mal ein anderes Bild nehmen und es vorher schon mal in das Image laden und dann nochmal testen?

MW880729 19. Jun 2007 23:02

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von bitsetter
Ich meine ich habe den Code mit meinem Drucker getestet und es ist auch was ausgedruckt worden.
Kannst du denn nicht mal ein anderes Bild nehmen und es vorher schon mal in das Image laden und dann nochmal testen?


auch mit einem anderen Bild geht es leider nicht ... das Bild wird ja ins Image geladen, also da ist kein Fehler ... habe es nun mit *.bmp- und *.jpg- Bildern versucht ....

Gruß,
Manu

bitsetter 19. Jun 2007 23:26

Re: Grafik drucken mit Printer.Canvas
 
Das hier könntest du ansonsten auch noch versuchen.

Luckie 19. Jun 2007 23:32

Re: Grafik drucken mit Printer.Canvas
 
Aber die Tinte ist nicht alle oder? Teste das doch mal mit einem PDF-Drucker, spart ausser dem Papier und Tinte. ;)

dizzy 20. Jun 2007 02:43

Re: Grafik drucken mit Printer.Canvas
 
Ich würde auch eher dazu tendieren den Image.Bitmap.Canvas zu nehmen, statt des Picture.Canvas. Wahrscheinlich ist es sogar egal, aber ich stehe auf dieses Picture-Konstrukt nicht besonders, weswegen ich gerne mal die Schuld da suche :lol:. Einfach mal probieren...

MW880729 20. Jun 2007 07:36

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von bitsetter
Das hier könntest du ansonsten auch noch versuchen.

Danke, werd ich versuchen

Zitat:

Zitat von Luckie
Aber die Tinte ist nicht alle oder? Teste das doch mal mit einem PDF-Drucker, spart ausser dem Papier und Tinte.

Ich verwende die ganze Zeit schon nur nen PDF-Drucker, meine Patronen kosten im Doppelpack 57€ ;)

Zitat:

Zitat von dizzy
Ich würde auch eher dazu tendieren den Image.Bitmap.Canvas zu nehmen, statt des Picture.Canvas. Wahrscheinlich ist es sogar egal, aber ich stehe auf dieses Picture-Konstrukt nicht besonders, weswegen ich gerne mal die Schuld da suche . Einfach mal probieren...

okay, ich versuchs mal, danke!

Meld mich dann obs geklappt hat oder nicht.

Gruß,
Manu

MW880729 20. Jun 2007 07:48

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von bitsetter
Das hier könntest du ansonsten auch noch versuchen.


Da bekomme ich die Meldung "Printer is not currently printing" ....

hab ebensowenig aufm Papier wie vorher auch schon ...

Gruß,
Manu

messie 20. Jun 2007 08:30

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von MW880729
Ich verwende die ganze Zeit schon nur nen PDF-Drucker, meine Patronen kosten im Doppelpack 57€ ;)

pdf-Drucker verschlucken auch gerne mal Grafiken. Ab und zu sollte man dann mal richtig drucken oder eine Vorschaukomponente benutzen, z.B. diese

Grüße, Messie

MW880729 20. Jun 2007 15:37

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von messie
Zitat:

Zitat von MW880729
Ich verwende die ganze Zeit schon nur nen PDF-Drucker, meine Patronen kosten im Doppelpack 57€ ;)

pdf-Drucker verschlucken auch gerne mal Grafiken. Ab und zu sollte man dann mal richtig drucken oder eine Vorschaukomponente benutzen, z.B. diese

Grüße, Messie


Das Problem ist ja (dachte ich) nicht der PDF-Drucker, denn wenn ich aus Photoshop nen Bild als PDF drucke funktioniert es ja, aber wenn ich es mit meinem eigens geschriebenen Programm versuche nicht ...

Na ja, werde allerdings auch deine Lösung mal ausprobieren.

Danke schonmal, vielleicht fällt euch ja auch noch was anderes ein!!

Gruß,
Manu

MW880729 20. Jun 2007 19:19

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von MW880729
Zitat:

Zitat von messie
Zitat:

Zitat von MW880729
Ich verwende die ganze Zeit schon nur nen PDF-Drucker, meine Patronen kosten im Doppelpack 57€ ;)

pdf-Drucker verschlucken auch gerne mal Grafiken. Ab und zu sollte man dann mal richtig drucken oder eine Vorschaukomponente benutzen, z.B. diese

Grüße, Messie


Das Problem ist ja (dachte ich) nicht der PDF-Drucker, denn wenn ich aus Photoshop nen Bild als PDF drucke funktioniert es ja, aber wenn ich es mit meinem eigens geschriebenen Programm versuche nicht ...

Na ja, werde allerdings auch deine Lösung mal ausprobieren.

Danke schonmal, vielleicht fällt euch ja auch noch was anderes ein!!

Gruß,
Manu


Habe es gerade mal auf nem richtigen Drucker gedruckt, und dort bekomm ich es tatsächlich angezeigt und gedruckt .... Nur auf dem PDF-Drucker nicht ...
verstehe gar nicht weshalb, aber nun weiss ich, dass es funktioniert ;)

Danke euch allen für eure Ideen und Anregungen!!!

Gruß,
Manu

backdraft 19. Jul 2007 10:19

Re: Grafik drucken mit Printer.Canvas
 
Hallo,

hast Du ne Lösung zu dem Problem mittlerweile?
Habe nämlich das gleiche Problem ... manche Drucker drucken, manche nicht. PDF zb auch nicht, MDI klappt super.

Es scheint an dem Bild zu liegen bei mir. Manche druckt er nämlich.

MW880729 19. Jul 2007 18:46

Re: Grafik drucken mit Printer.Canvas
 
Zitat:

Zitat von backdraft
Hallo,

hast Du ne Lösung zu dem Problem mittlerweile?
Habe nämlich das gleiche Problem ... manche Drucker drucken, manche nicht. PDF zb auch nicht, MDI klappt super.

Es scheint an dem Bild zu liegen bei mir. Manche druckt er nämlich.

Habe leider auch keine Lösung gefunden dafür ... auch bislang noch nicht dafür, dass meine Bilder verpixelt und verschwommen gedruckt werden, was ich in einem anderen Thread angesprochen hatte ... aber na ja, das gibt sich noch ^^

Gruß
Manu

Silk 28. Nov 2009 09:28

Re: Grafik drucken mit Printer.Canvas
 
Evtl. etwas spät:
Versucht mal die y-Koordnate als Negativwert zu setzen, dann sollte es funktionieren.

xVaskii 24. Apr 2016 20:07

AW: Grafik drucken mit Printer.Canvas
 
bei mir geht der code, leider ist die hälfte vom bild nicht zu erkennen da sie ausserhalb ist :D und es ist etwas skaliert


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf