druckproblem auf laserdrucker



  • hi leute .. ich hab nen problem habe heute nen neuen farblaser drucker bekommen...
    ich habe nen tool zum cover drucken geschrieben allerdings druckt er mir jetzt nurnoch den schwarzen rahmen und nicht mehr das bild in die mitte .. auf meinem tintenpisser hat es funktioniert .. jemand ne idee

    float breite1,hoehe1;
      int breite,hoehe,x,y;
      PrintDialog1->Execute();
      TPrinter *Prntr = Printer();
      Prntr->Orientation=poLandscape;
    
      breite1=StrToFloat(27.2)/(20.2/Prntr->PageHeight);
      hoehe1=StrToFloat(18.3)/(29.0/Prntr->PageWidth);
      breite=breite1;
      hoehe=hoehe1;
      Application->MessageBox(FloatToStr(breite).c_str(),FloatToStr(hoehe).c_str(),MB_OK);
      Prntr->Title="Cover " + C_Name->Text + " (" + C_CDNr->Text + ")" ;
      Prntr->BeginDoc();
      Prntr->Canvas->Brush->Color=clBlack;
      Prntr->Canvas->Rectangle(116,116,breite+124,hoehe+124);
      Prntr->Canvas->Brush->Color=clWhite;
      Prntr->Canvas->Rectangle(118,118,breite+122,hoehe+122);
      Prntr->Canvas->Brush->Color=clBlack;
      Prntr->Canvas->StretchDraw(Rect(120,120,breite+120,hoehe+120),Image2->Picture->Graphic);
      Prntr->EndDoc();
    


  • Macht der das auch, wenn Du die Pixel 1:1 druckst (nicht skaliert)?

    Ich hatte das mit SW-Lasern schon mal, war etwas Treiber abhaengig.
    Bei 1:1 hat's meist geklappt.

    Ne Loesung wuerde mich auch interessieren.



  • ich habe es auch mit copy rect versucht das hat auch nicht funktioniert ... jetzt versuche ich es jedes pixel einzeln zu seitzen mit zwei verschlachtelten schleifen .. allerdings is mein druckaufrtag dan 2,44 gb groß .. das kann ja net sein .... wenn ich nen kleinen berich nehmen von 500 pixeln hat es da geklappt ... jedenfalls manchmal .... also auch nicht bei allen Timages .. bei einem ja bei dem anderen nicht .. ich weiss allerdings net warum



  • Hast Du mal die WinAPI- Funktionen benutzt?



  • leider habe ich keien api funktiln gefunden.
    allerdingd hat es folgendermaßen geklappt das canvas als bitmap speichern und erneut laden, danach hat er auch gedruckt!!!

    aber ich fände es super wenn jemand mal nen beispiel für ne api funktion posten könnte



  • TPoint Points[3];
    
      Points[0].x=0;//LiOb
      Points[0].y=Pic->Width*Dimension->ImageZoom;
      Points[1].x=0;//ReOb
      Points[1].y=0;
      Points[2].x=Pic->Height*Dimension->ImageZoom;//LiUn
      Points[2].y=Pic->Width*Dimension->ImageZoom;
    
      Res=PlgBlt(
                 BM->Canvas->Handle,// handle to destination device context
                 Points,	// vertices of destination parallelogram
                 BM->Canvas->Handle,// handle to source device context
                 0,	// x-coord. of upper-left corner of source rect.
                 0,	// y-coord. of upper-left corner of source rect.
                 Pic->Width*Dimension->ImageZoom,// width of source rectangle
                 Pic->Height*Dimension->ImageZoom,// height of source rectangle
                 NULL,	// handle to bitmask
                 0,	// x-coord. of upper-left corner of bitmask rect.
                 0 	// y-coord. of upper-left corner of bitmask rect.
                 );
    

    in Pic (Picture) ist eine Graphik.

    in BM (TBitmap) kommt das ergebnis (Groesse muss eingestellt werden - ist hier weggelassen!)

    in Dimension->ImageZoom hab ich nen Skalierfaktor (double)

    Die Graphic aus Pic wird gedreht in BM gezeichnet mit Zoomfaktor.

    In Points sind 3 Ecken fuer das Zielbild.

    Geht auch mit:

    Points[0].x=Pic->WidthDimension->ImageZoom-1;//LiOb
    Points[0].y=Pic->Height
    Dimension->ImageZoom-1;
    Points[1].x=0-1;//ReOb
    Points[1].y=Pic->HeightDimension->ImageZoom-1;
    Points[2].x=Pic->Width
    Dimension->ImageZoom-1;//LiUn
    Points[2].y=0-1;
    oder ...

    Schau mal in Winapi- hilfe!




Anmelden zum Antworten