AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap an den Drucker senden

Ein Thema von Moony · begonnen am 13. Mär 2008 · letzter Beitrag vom 19. Mär 2008
Antwort Antwort
Seite 4 von 4   « Erste     234   
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#31

Re: Bitmap an den Drucker senden

  Alt 17. Mär 2008, 16:18
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?
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#32

Re: Bitmap an den Drucker senden

  Alt 17. Mär 2008, 16:19
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)
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#33

Re: Bitmap an den Drucker senden

  Alt 17. Mär 2008, 16:21
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.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#34

Re: Bitmap an den Drucker senden

  Alt 17. Mär 2008, 16:31
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.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#35

Re: Bitmap an den Drucker senden

  Alt 17. Mär 2008, 16:48
Sorry, überlesen. Also ausgehend von deinem Beispiel versuch mal folgendes:

Delphi-Quellcode:
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;
// drucken
Was siehst du, Text, dein Bild, dein Bild ganzsseitig?
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#36

Re: Bitmap an den Drucker senden

  Alt 17. Mär 2008, 17:09
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?
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#37

Re: Bitmap an den Drucker senden

  Alt 19. Mär 2008, 11:08
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:
  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);
Bei diesem Code wird die zweite Seite auf die erste Seite gedruckt und die erste gar nicht.
Alle Funktionen mit dem Underscore sind aus einer anderen Applikation die aufgerufen werden und die den Druckjob verwalten.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#38

Re: Bitmap an den Drucker senden

  Alt 19. Mär 2008, 14:21
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.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 18:21 Uhr.
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