![]() |
Re: Bitmap an den Drucker senden
Ich besitze keinen Canvas.
Hier der Verlauf: 1. Ich rufe eine andere Applikation auf, diese Applikation erstellt mit CreateDC ein Handle. Dieses Handle bekomme ich von dieser Applikation zurück. 2. Zurück bei mir muß ich diesem Handle meine Druckdaten mitteilen. 3. Ich sage der anderen Applikation, dass Sie den Druckauftrag abschließen und ausführen kann. Das Problem ist also, dass ich lediglich ein Handle bekomme und damit weiter arbeiten muss. Ich habe keinen Canvas. Deshalb war zu aller erst meine Frage wie ich das Canvas eines Druckers anhand des Handles bekomme. So wie ich bei meinem letzten Beitrag Daten an den Drucker schicke kommt es zumindest zu keinem Fehler, aber der Drucker druckt nichts. Was die Funktion GetDC betrifft: Mit GetDC bekomme ich ein weiteres Handle und ich weiß immer noch nicht was ich dann mit einem wieteren Handle anfangen soll? |
Re: Bitmap an den Drucker senden
Nein und der Drucker steht zuweit weg als ich da mal gucken gehen würde ob was rauskommt.
Naja es war von getDC die Rede und von Canvas.handle := printerHandle, aber nicht davon beides kombiniert einzusetzen (oder ich habs übersehen) ;-) |
Re: Bitmap an den Drucker senden
Naja mit CreatDC ist der Devicecontext, den du dem Canvas.handle zuweisen kannst, generell schonmal da.
Der Fehler liegt dann woanders, z.B. dass du nicht im richtigen Koordinatensystem druckst (somit wird dein Bitmap weggeworfen(geclippt)) und es kommt eine leere Seite heraus. |
Re: Bitmap an den Drucker senden
Und wie kann man das beheben? Ich wüßte jetzt nicht, dass ich im System bin...
Zur kleinen Info: Wenn ich einen TextOut() ausführe, dann wird dieser gedruckt. Das was mir aber wichtig ist, ist eine Bilddatei an den Drucker zu schicken. |
Re: Bitmap an den Drucker senden
Sorry, überlesen. Also ausgehend von deinem Beispiel versuch mal folgendes:
Delphi-Quellcode:
Was siehst du, Text, dein Bild, dein Bild ganzsseitig?
C:= TCanvas.create;
C.handle:= Printerhandle; C.TextOut(0-x, 0-y, 'schnickschnackschnuck'); C.draw(0-x, 0-y, myGraphic); C.stretchDraw(Rect( 0-x, 0-y, -1, -1), myGraphic); C.free; |
Re: Bitmap an den Drucker senden
Also bis auf das die Druckereinstellungen nicht stimmen wurde zumindest das Bild draufgedruckt!!!! Ich werde das morgen weiter unter die Lupe, wie man das optimieren kann.
Kann ich denn noch die richtigen Druckereinstellungen setzen? |
Re: Bitmap an den Drucker senden
So, habe das jetzt bei mir eingebaut und habe nur noch ein Problem:
Wie schicke ich ihm ne zweite Seite? Ich habe das so versucht:
Delphi-Quellcode:
Bei diesem Code wird die zweite Seite auf die erste Seite gedruckt und die erste gar nicht.
myGraphic := TBitmap.Create;
myCanvasF := TCanvas.Create; myCanvasB := TCanvas.Create; try if FileExists(ExtractFilePath(Application.ExeName) + '!NewCard.bmp') then myGraphic.LoadFromFile(ExtractFilePath(Application.ExeName) + '!NewCard.bmp'); myCanvasF.Handle := PrntHandle; X := GetDeviceCaps(PrntHandle,PHYSICALOFFSETX); Y := GetDeviceCaps(PrntHandle,PHYSICALOFFSETY); GetDIBSizes(myGraphic.Handle, HeaderSize, ImageSize); myCanvasF.Draw(0-X, 0-Y, myGraphic); myCanvasF.StretchDraw(Rect(0-X, 0-Y, 1027, 648), myGraphic); if FileExists(ExtractFilePath(Application.ExeName) + '!NewCard2.bmp') then begin if @_DCStartPage <> nil then _DCStartPage(); myGraphic.LoadFromFile(ExtractFilePath(Application.ExeName) + '!NewCard2.bmp'); myCanvasB.Handle := PrntHandle; myCanvasB.Draw(0-X, 0-Y, myGraphic); myCanvasB.StretchDraw(Rect(0-X, 0-Y, 1027, 648), myGraphic); end; finally myGraphic.Free; myCanvasF.Free; myCanvasB.Free; end; Result := _DCContinue(0); Alle Funktionen mit dem Underscore sind aus einer anderen Applikation die aufgerufen werden und die den Druckjob verwalten. |
Re: Bitmap an den Drucker senden
Teile der anderen Awendung, die den Druckjob verwaltet mit, eine neue Seite zu erstellen und dir den Devicecontext zu übermitteln.
Um eine neue Seite selber zu erstellen benötigst du mehr als das DC-Handle. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz