Delphi-PRAXiS
Seite 1 von 3  1 23      

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.
Seite 1 von 3  1 23      

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