Bitmap drucken



  • Kann mir jemand sagen, warum folgender Code nicht funktioniert?
    Es wird nur das Druckeinstellungenfenster kurz angezeigt.
    Dann Schluß, nichts mehr.

    Wenn ich aber die Zeile Prntr->EndDoc(); weglasse ist der Druckauftrag in der Warteschlange

    void TForm1::printBitmap(Graphics::TBitmap *bit)
    {
      TPrinter *Prntr = Printer();
    
      Prntr->BeginDoc();
    
      TRect   TDest, TSource;
    
      TDest = Rect(200,200,(Prntr->PageWidth)-200,(Prntr->PageHeight)-200);
      TSource = Rect(0,0,bit->Width, bit->Height);
    
      Prntr->Canvas->CopyRect(TSource, bit->Canvas, TDest);
    
      Prntr->EndDoc();
    }
    


  • Man fragt sich, wer TDest & TSource ist, wenn MyDest & MySource definiert sind



  • War nur Fahrigkeit beim posten. Werd ich mal gleich ändern.
    Der Fehler liegt woanders.



  • Sorry, aber postest du hier Code?? Versuch doch mal mit Copy & Paste zu arbeiten. Ist irgendwie auch nicht schön, wenn dann hier Code gezeigt wird, der so überhaupt nicht codiert wurde.

    Ansonsten, wenn es sich nicht um zwei gleich Große Rechtecke handelt ist StretchDraw zu benutzen



  • Copy und Paste? Die beiden kenne ich nicht.
    Aber folgender Code geht auch nicht

    TPrinter *Prntr = Printer();
      Prntr->BeginDoc();
    
      TRect   TDest;
    
      TDest = Rect(20,20,200,200);
    
      Prntr->Canvas->StretchDraw(TDest, bit);
      Prntr->EndDoc();
    

    Wie gesagt, der Drucker ruckelt zwar, Tinte ist drinne und Drucker ist auch nicht kaputt. Aber in der Warteschlange steht nichts.

    Übrigens, hab ich den Fehler oben verbessert.



  • Bei einem handelsüblichen Drucher mit 1200dpi und einer Bildschirmauflösung von 96 dpi, da wird vielleicht nicht viel zu sehen sein



  • Kommt nich mal Papier raus



  • Was soll man dazu sagen??

    Da du ja offenbar immer nur Teilcode postest und den noch nichtmal richtig ist das alles Kaffeesatzleserei. 😕

    Wenn nicht, dann liegt es daran, das bit nciht definiert ist



  • Die ganze Funktion sieht so aus

    void TForm1::printBitmap(Graphics::TBitmap *bit)
    {
      TPrinter *Prntr = Printer();
      Prntr->BeginDoc();
    
      TRect   TDest;
    
      TDest = Rect(20,20,200,200);
    
      Prntr->Canvas->StretchDraw(TDest, bit);
      Prntr->EndDoc();
    }
    

    Die Bitmap ist deklariert und definiert



  • Das Problem ist schon hinlänglich bekannt. Du musst anstatt des TBitmap ein TGraphic nehmen. Dann funktioniert das auch. Bitmaps lassen sich mit TPrinter zumindest beim BCB6 nicht drucken.



  • Hab ich mal so probiert

    Prntr->Canvas->StretchDraw(TDest, (TGraphic *)bit);

    Jetzt ackert der Drucker mehr herum als vorher, druckt aber nicht, und in der Warteschlange immer noch nichts


Anmelden zum Antworten