Autor |
Beitrag |
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 03.10.06 00:20
ich hab mir folgendes im forum zusammengesucht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); begin Printer.Title:='bla'; Printer.BeginDoc; Printer.Canvas.Draw(0,0,Image1.Picture.Graphic); Printer.EndDoc; end;
procedure TForm1.Button2Click(Sender: TObject); var i: Byte; begin Image1.Height:= 600; for i:= 0 to 120 Do Image1.Canvas.Textout(1,i*50,IntToStr(i*50)); end; |
der drucker zieht das blatt und macht dann nichts damit, kann mir jemand sagen was ich falsch mache?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 03.10.06 00:25
Moin!
Müßte das nicht so gehen, wenn du mit .Canvas gemalt hast:
Delphi-Quelltext 1:
| Printer.Canvas.Draw(0,0,Image1.Picture.Bitmap); |
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 03.10.06 00:30
nein da passiert dasselbe... 
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Do 05.10.06 17:51
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Fr 09.02.07 05:13
*mal wieder hochschieb nach 4 monaten ;D*
irgendwer wird doch schonmal en bild gedruckt haben?
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Fr 09.02.07 06:56
Und? Hast Du nach 4 Monaten nicht nochmal neu gesucht? Das Zauberwort ist SetStretchBltMode und StretchBlt weil Bildschirm (96dpi) und Druckerauflösung(~300dpi) immer unterschiedlich sind.
Thread www.delphi-forum.de/...ghlight=bild+drucken
Es gibt aber noch eine andere Möglichkeit die ich für mein Projekt schon lange verwende über eine TRichEditEx Komponente (Shareware von Jean LACOSTE), vielleicht gibts noch ähnliche Komponenten (ich hörte von Jedi).
Vorteil ist, mit nur ein paar Befehlen ist das Bild eingefügt, es scaliert sich automatisch zu der Druckerauflösung, und man kann auch eine Vorschau generieren.
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Fr 09.02.07 21:22
ich hab das jetz so (ein wenig abgeändert da ich keine panel hab), klappt aber trotzdem nich, drucker zieht blatt und das wars
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Drucken1Click(Sender: TObject); var i, j : integer; Druckgroesse : TRect; oW, oH : integer; begin printer.orientation := poPortrait; printer.BeginDoc; Druckgroesse.Left := 0; Druckgroesse.Top := 0; Druckgroesse.Right := GetDeviceCaps(Printer.Canvas.Handle, horzres); Druckgroesse.Bottom := GetDeviceCaps(Printer.Canvas.Handle, vertres); oW := Image1.Width; oH := Image1.Height;
SetStretchBltMode(printer.Canvas.Handle, HALFTONE); StretchBlt(printer.Canvas.Handle, 0, 0, Druckgroesse.Right, Druckgroesse.Bottom, Image1.Canvas.Handle, 0, 0, oW, oH, SRCCopy); printer.EndDoc; end; |
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Sa 10.02.07 08:12
Jetzt wollte ich es auch mal genauer wissen, unten ein Beispiel Projekt (mit genau Deinem Code) - hat auf Anhieb funktioniert. Selbst auf einem Bondrucker (Epson TMT). Vielleicht ist Dein Standard-Drucker verstellt oder sonstwie ungültig? Im Projekt auch die compilierte .exe, probier die zuerst. 2 Buttons, einmal über Standarddrucker und einmal Drucker auswählen. Wäre gut, wenn andere das auch testen, und wenn es dort auch geht, ist irgendwas bei Dir faul (vielleicht mal an einem anderen Computer testen). Oder versuch mal einen anderen Drucker...
Woran aber noch zu arbeiten ist: an der Größe, auf dem HP Deskjet druckt er mir das Bild auf die ganze Seite...
//Edit: Achso, beim ersten Mal hatte ich ein .jpg Bild ohne spezielle Konvertierung eingefügt, da hat er nix gedruckt.
Einloggen, um Attachments anzusehen!
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Sa 10.02.07 18:33
thx, funktioniert ;D
hab gestern mal noch beim suchen herausgefunden das der drucker eben nix druckt wenn das Image zu groß ist, vllt liegts daran ich schaus mir bei gelegenheit mal ganz genau an
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 06.03.07 04:51
ich hat grad mal wieder ein wenig zeit mich um das drucken zu kümmern
wenn ich das image zur laufzeit "bemal" und dann die obige druckerprozedur verwende geschieht nix, nehm ich jedoch das image und speicher es per Image1.Picture.Bitmap.SaveToFile(); und schmeißes dann zur entwurfszeit (so wie beim bsp von Raffo) in ein Image und drucks dann mit der selben prozedur klappts, warum?
das bild is 649 x 800 Pixel groß falls das irgendwie relevant is...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 20.03.07 01:01
as passiert denn, wenn du den Inhalt des Images in ein Bitmap kopierts und den Canvas des Bitmaps an den Drucker schickst? Ansonsten: www.michael-puff.de/...006_06/Drucken.shtml und www.michael-puff.de/...Sonstiges/Print.html
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 20.03.07 02:04
jop
ich bemal das bild mit Image1.Canvas
und will das dann so weitergeben an den drucker Printer.Canvas.Draw(0,0,Image1.Picture.Bitmap);
was ja dann das bild eigentlich autom auf die größe des druckers stretchen sollte
deine tuts find ich etwas umständlich, da ich so sämtliche zeichenroutinen nochmal anwerfen müsste nur halt auf den Printer.Canvas und dabei müsste ich dann noch alles auf die größe des druckers umrechnen, was mir sehr aufwendig erscheint
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Sa 24.03.07 05:58
ich hab mal alle prozeduren die ich im netz feinden konnt durch probiert, keine hat funktioniert...
bin ich wirklich zu dumm dazu?
gibts eine dll an die ich einfach nur den canvas übergeben muss, und die das dann für mich druckt?
|
|
LGoris
Hält's aus hier
Beiträge: 1
|
Verfasst: Mo 26.03.07 22:53
Titel: image wird nicht gedruckt
Try this:
Take a TChart component (z.b. Chart1) over the image wou will print (z.b. ImPict) and set his propertys invisible or 0(I mean: left axis, bottom axis u.s.w.). Chart1.Height = ImPict.Height, Chart1.Width = ImPict.Width, Chart1.Visible = False
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm.SBtnPrintPictureClick(Sender: TObject); begin Chart1.BackImage:=ImPict.Picture; Chart1.Visible:=True; Teeprevi.ChartPreview(Form,Chart1); Chart1.Visible:=False; end; |
Do not forget: add the unit Teeprevi to the uses of your unit.
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Sa 31.03.07 23:03
das geht bei mir auch nicht, obwohl in der druckvorschau alles richtig dargestellt wird
hab nun aber das gefunden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var bmp: TBitmap; begin Seite1.Picture.Bitmap.SaveToFile('1.bmp'); try bmp:= TBitmap.Create; bmp.LoadFromFile('1.bmp'); with Printer do begin BeginDoc; Canvas.StretchDraw(Rect(200, 200, PageWidth - 200, PageHeight - 200), bmp); EndDoc; end; bmp.Destroy; except raise; end; end; |
das funktioniert
aber wenn ich es nicht erst auf der platte ablege sondern direkt so mache:
bmp:= Seite.Picture.Bitmap;
gehts wiedrrum nicht, warum?
Für diesen Beitrag haben gedankt: compiler93
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 01.04.07 03:55
Ich würde ja mal ein falsches PixelFormat vermuten, wenn es aus Datei geht. Was steht da denn drin?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: So 01.04.07 04:52
das Image.Picture.Bitmap ist pfDevice
und das bmp ist pf32Bit
ich find morgen (also das heute morgen ;D ) mal raus obs wirklich daran gelegen hat, wenn ja schrei ich erstmal ganz laut
|
|
Ironwulf 
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Mi 04.04.07 02:36
*schrei*
lag echt die ganze zeit nur daran...
|
|