AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Grafik drucken mit Printer.Canvas

Grafik drucken mit Printer.Canvas

Ein Thema von MW880729 · begonnen am 19. Jun 2007 · letzter Beitrag vom 24. Apr 2016
Antwort Antwort
Seite 1 von 3  1 23   
MW880729

Registriert seit: 19. Jun 2007
23 Beiträge
 
#1

Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 21:04
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
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 21:47
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
MW880729

Registriert seit: 19. Jun 2007
23 Beiträge
 
#3

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 21:57
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 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
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 21:59
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.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
MW880729

Registriert seit: 19. Jun 2007
23 Beiträge
 
#5

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 22:04
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
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 22:20
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
MW880729

Registriert seit: 19. Jun 2007
23 Beiträge
 
#7

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 22:32
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
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 22:44
Komisch bei mir funktioniert der Code, habe ihn getestet.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
MW880729

Registriert seit: 19. Jun 2007
23 Beiträge
 
#9

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 22:49
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
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Grafik drucken mit Printer.Canvas

  Alt 19. Jun 2007, 22:54
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?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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