Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi kurioses Problem: TBitmap drucken -> Lexmark druck nichts (https://www.delphipraxis.net/117677-kurioses-problem-tbitmap-drucken-lexmark-druck-nichts.html)

hugo1990 23. Jul 2008 10:44


kurioses Problem: TBitmap drucken -> Lexmark druck nichts
 
Wenn ich mittels
Delphi-Quellcode:
  Printer.Canvas.Draw(0, 0, Bild);
ein TBitmap drucken will druckt mein Drucker(Lexmark) nur ein weißes Blatt. Alle anderen Drucker im Haus drucken aber das Bild aus. Ich weiß aber, dass ich schon mal in einem anderen Programm ein TBitmap mit genau diesem Drucker aus gedruckt. Also habe ich ein wenig hin und her probiert und habe mal auf ein TImage ein Bild gelegt und das dann über
Delphi-Quellcode:
  Printer.Canvas.Draw(0, 0, Image1.Picture.Graphic);
drucken lassen. Und siehe da er druckt es, sowie ich aber statt Graphic Bitmap nehme (ich habe auf das TImage auch eine bmp-Datei gelegt) druck er es nicht mehr.
Also dachte ich, vllt liegt es ja am Treiber, also habe ich den deinstalliert und noch einmal neu installiert und dann sogar noch den neusten aus dem Internet geladen und installiert, aber er druckt immer nur ein weißes Blatt.
Kennt jemand dieses Problem und/oder kann mir einen Tip geben, was ich noch probieren könnte?

hugo1990 23. Jul 2008 14:15

Re: kurioses Problem: TBitmap drucken -> Lexmark druck ni
 
OK ich hab jetzt eine Lösung gefunden. Und zwar speichere(da ich auf dem Canvas Veränderungen vorgenommen habe) ich das Bitmap vor dem Drucken und lade es dann neu, danach druckt er es ohne Probleme. Ist zwar keine schöne Lösung, aber wenigstens funktioniert es jetzt schon mal.
Vllt kennt ja jemand noch eine bessere Lösung und kann sie mir verraten.

hugo1990 23. Jul 2008 15:05

Re: kurioses Problem: TBitmap drucken -> Lexmark druck ni
 
OK Fehlalarm, im Testprogramm, wo ich nur mal schnell das Drucken getestet habe ging es mit der Variante Bild speichern und wieder laden, aber in dem Programm, wo ich es eigentlich brauche funktioniert es nicht. Ich gehe jetzt einfach mal davon aus, dass der Drucker kaputt ist - Lexmark is sowieso scheiße - und werde mir mal einen vernünftigen zulegen.

roga 23. Jul 2008 15:38

Re: kurioses Problem: TBitmap drucken -> Lexmark druck ni
 
Hallo,

hatte auch mal ein ähnliches Problem, wo bei bestimmten Druckern nur ein weißen Blatt heraus kam. Habe dann irgendwo im Forum eine Lösung gefunden und entsprechend angepasst.

Delphi-Quellcode:
procedure PrintBitmap(aCanvas: TCanvas; Dest: TRect; Bitmap: TBitmap);
var Info: PBitmapInfo;
    InfoSize: DWord;
    Image: Pointer;
    ImageSize: DWord;
begin
  with Bitmap do
  begin
    GetDIBSizes(Handle, InfoSize, ImageSize);
    Info := AllocMem(InfoSize);
    try
      Image := AllocMem(ImageSize);
      try
        GetDIB(Handle, Palette, Info^, Image^);
        if not Monochrome then
          SetStretchBltMode(ACanvas.Handle, STRETCH_DELETESCANS);
        with Info^.bmiHeader do
          StretchDIBits(aCanvas.Handle, Dest.Left, Dest.Top,
            Dest.RIght - Dest.Left, Dest.Bottom - Dest.Top,
            0, 0, biWidth, biHeight, Image, Info^, DIB_RGB_COLORS, SRCCOPY);
      finally
        FreeMem(Image, ImageSize);
      end;
    finally
      FreeMem(Info, InfoSize);
    end;
  end;
end;
aCanvas ist die Drucker-Zeichenfläche, Dest die Seitengröße.

Sollte es immer noch nicht klappen, ist Dein Drucker entweder wirklich kaputt oder der Tank ist leer...

Gruß RoGa

hugo1990 23. Jul 2008 16:11

Re: kurioses Problem: TBitmap drucken -> Lexmark druck ni
 
Also ich versteh die Welt nicht mehr, ich habe absolut überhaupt nichts am Quellcode geändert, nichts am Drucker, gar nichts, und auf einmal druckt er wieder was er soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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