Probleme beim drucken...



  • Hallo!
    Folgendes...

    Ich versuche mit StretchDraw ein Bitmap auszudrucken. Ich dachte auch, das es funktioniert. Bis ich das Programm auf einem anderen Rechner hab laufen lassen. Da wurde der Ausdruck auf einmal riesengroß. Wie mache ich es, dass das Bild auf allen Druckern mit der gleichen Größe ausgedruckt wird?????

    Habe schon alle auffindbaren FAQs und News-Foren abgegrast, kann nichts finden.

    Wäre riesig dankbar für einen guten Tipp!

    Bis dahin...



  • Du has wahrscheinlich die dpi's nicht berücksichtigt !?
    Leider hast Du keinen Code mit geliefert 😮
    Wenn der erste Drucker z.B. eine Auflösung von 600 dpi's hatte, und du hast dein Bild mit zb 200 pix gedruckt, ist dein Bild auf einem Drucker mit 300 dpi
    doppelt so groß 😉 .

    [ Dieser Beitrag wurde am 13.02.2003 um 00:33 Uhr von YLIREBUS editiert. ]



  • und wie kann ich die DPIs abfragen??



  • Ich bin ein Stückchen weitergekommen...
    Mit folgendem Sourcecode funktioniert es fast. Zumindest auf zwei verschiedenen Druckern mit unterschiedlichen DPI-Auflösungen.
    Aber ein Problem habe ich immer noch...

    Obwohl ich für Left.Height und Left.Width= 0 angegeben habe, druckt er bei einem Drucker nicht richtig. Etwa einen Zentimeter vom linken Teil des Bildes wird nicht gedruckt. Wie kann ich das wohl einstellen? Bin echt ratlos.
    Die linke obere Position druckt er irgendwie im Minusbereich. Ändere ich diese, druckt er bei dem anderen Drucker zu weit rechts...

    (Aber *freu* das ich ich schon mal ein Stück weiter gekommen bin)
    //____________________________________________________________________________
    #include <printers.hpp>
    void __fastcall TForm1::PrintClick(TObject *Sender)
    {
    if (PrintDialog1->Execute( )) {
    TPrinter *APrinter = Printer();
    APrinter->BeginDoc();

    // Determine bitmap's real-world size in twips,
    // assuming that it is deault resolution (96 DPI).
    // One twip is 1/1440 inch.
    int MmWidth=(Image1->Picture->Bitmap->Width * 1440) / 96;
    int MmHeight=(Image1->Picture->Bitmap->Height * 1440) / 96;

    // Get current DPI information from the printer.
    int HorDPI=GetDeviceCaps(APrinter->Handle,LOGPIXELSX);
    int VerDPI=GetDeviceCaps(APrinter->Handle,LOGPIXELSY);

    // Translate picture size to printer device pixels
    TRect R;
    SetRect((RECT *)&R,0,0,(MmWidth*HorDPI)/1440,(MmHeight*VerDPI)/1440);

    // You could use OffsetRect() to position the picture.
    // Draw it on the printerpage
    APrinter->Canvas->StretchDraw(R,Image1->Picture->Bitmap);
    APrinter->EndDoc();
    }
    }



  • Oh, da habe ich mich vertippt:

    "Obwohl ich für Left.Height und Left.Width= 0 angegeben habe"
    sollte natürlich heißen :

    "Obwohl ich für R.Left=0; und R.Top=0; angegeben habe"
    😕



  • Das Problem hat sich gelöst 😃

    Ich habe nichts an dem Programm geändert, einfach nochmal versucht zu drucken und gucke da, jetzt funktioniert es auf einmal

    Komisch 😕

    Aber hauptsache es klappt jetzt!


Anmelden zum Antworten