Announcement

Collapse
No announcement yet.

Bilddruck

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bilddruck

    Sers,

    versuche ein Bild zu drucken, hier erstmal der Quelltext:

    Code:
    procedure ResizeImage(newWidth,newHeight: Integer);
    begin
      SetStretchBltMode(Form2.Image2.Canvas.Handle, Halftone);
      StretchBlt(Form2.Image2.Canvas.Handle, 0,0,newwidth,newheight,Form2.Image1.Canvas.Handle,0,0,Form2.Image1.Width,Form2.Image1.Height,SRCCOPY);
      Form2.Image2.Picture.SaveToFile('***.bmp');
    end;
    
    procedure PrintImage(iLeft, iTop: integer; Img: TImage);
    var
      GraphicRect: TRect;
    begin
      iLeft := iLeft;
      iTop := iTop;
      ZeroMemory(@GraphicRect, SizeOf(GraphicRect));
      GraphicRect.Right:= Img.Picture.Graphic.Width;
      GraphicRect.Bottom:= Img.Picture.Graphic.Height;
      if Form2.PrintDialog1.Execute then
      begin
         printer.begindoc;
            Windows.SetMapMode(printer.Canvas.Handle, 1);
            printer.Canvas.CopyRect(Rect(iLeft, iTop, iLeft+ GraphicRect.Right * 10, iTop+ GraphicRect.Bottom * 10), Img.Canvas, GraphicRect);
         printer.enddoc;
      end;
    end;
    
    procedure TForm2.Button14Click(Sender: TObject);
    (*var zeile, x, y: integer;
        breite, hoehe, randlinks, randoben: integer;*)
    begin
       Image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName) + '*.bmp');
       ResizeImage(260,90);
       PrintImage(200,20,image2);
    }
    Leider bekomme ich nichts aufm Drucker ausgegeben - und zwar gar nichts .......

    Bitte dringenst um Hilfe - und da es nachher wichtige Dokumente sind darf das bitmap auch nicht pixeln oder sonstiges ....

    Danke schonmal.

    Gruß
    Manu

  • #2
    So, hat länger gedauert, aber ich hab rausgefunden wies geht.

    Poste nur hier, damit ihr wisst, dass ich euch keine Gedanken mehr drum machen braucht, falls ihr das habt ^^ ... bis jetzt ist ja hier leider keine antwort gekommen.

    also zwecks der lösung verweise ich auf den vierten quadranten im orthogonalen Koordinationssystem.

    Gruß
    Manu

    Comment


    • #3

      Hallo MW80729

      Wie wärs hiermit !!

      Begindoc; // Druck Begin

      outDC := printer.canvas.handle;
      setmapmode(OutDC,mm_lometric); // 1/10 mm aber Y geht nach oben // Bitte Aktivieren wenn Bondrucker
      // angeschlossen ist.
      GetWindowExtEx(OutDC,w); // Auflösung ermitteln
      GetViewportExtEx(OutDC,v);
      setmapmode(OutDC,MM_ANISOTROPIC); // neuer Abb.-Modus
      SetWindowExtEX(OutDC,w.cx,w.cy,nil); // Skalierung ...
      SetViewPortExtEx(OutDC,v.cx,-v.cy,nil);

      //************************************************** **************************************************

      var ScaleX, ScaleY : Integer; R:TRect;

      ScaleX:=
      GetDeviceCaps(Handle , logPixelsX) div PixelsPerInch;
      ScaleY:=
      GetDeviceCaps(handle,logPixelsY) div PixelsPerInch;

      R :=Rect(10,0 , Image1.Picture.width * ScaleX,
      Image1.picture.Height * ScaleY); // Druckt Firmenlogo BMP
      Canvas.StretchDraw(r , Image1.picture.Graphic);

      enddoc;

      Comment

      Working...
      X